การเพิ่มวงเล็บรอบ ๆ ข้อความที่เน้นสีใน Vim


13

มีฟังก์ชั่นใน Vim ที่อนุญาตให้เพิ่มวงเล็บในข้อความที่เน้นสีหรือไม่?

ตัวอย่างเช่นถ้าฉันเน้น n = getchar() ใน if (n = getchar() == '\n')ฉันต้องการใส่วงเล็บไว้รอบ ๆ

คำตอบ:


15

คุณต้องมีปลั๊กอินที่ยอดเยี่ยมและต้องมี รอบทิศทาง . จากนั้นมันจะทำสิ่งที่คุณต้องการอย่างมีความสุขหากคุณเลือกข้อความและประเภท Sb (เซอร์ราวด์ - วงเล็บปีกกา) หรือ S) (สังเกตเมืองหลวง S!)

จริง ๆ แล้วมันสามารถทำได้หลายอย่างรอบตัว: คำพูดต่าง ๆ แท็ก ฯลฯ มันช่วยให้คุณใส่เคอร์เซอร์ในคำที่ยกมาสองคำ cs"' (การเปลี่ยนแปลงรอบทิศทาง " ไปยัง ' ) หรือคุณสามารถลบเครื่องหมายคำพูดได้โดยพิมพ์ ds" (ลบ-เซอร์ราวด์ " )

อ่านเอกสารโดยลิงค์มันยอดเยี่ยมจริงๆ!


1
คุณไม่ได้อธิบายถึงวิธีการเลือกใช้ ฉันถูกพาไปที่นี่เพราะมันไม่ชัดเจนในทันที
JackHasaKeyboard

@ JackhasaKeyboard คุณหมายถึงอะไรฉันไม่ได้อธิบายวิธีการเลือก ประโยคที่สองในคำตอบของฉันบอกว่า: & gt; จากนั้นมันจะทำสิ่งที่คุณต้องการอย่างมีความสุขถ้าคุณ เลือกข้อความ และประเภท sb (เซอร์ราวด์ - วงเล็บปีกกา) หรือ s).
Dmitry Frank

1
ดังนั้นคุณทำ แม้ว่าฉันจะไม่ได้ผล s เพียงลบการเลือกและเข้าสู่โหมดแทรก
JackHasaKeyboard

1
หมายความว่าปลั๊กอิน "ล้อมรอบ" ที่ฉันพูดถึงในคำตอบนั้นติดตั้งไม่ถูกต้อง
Dmitry Frank

ยอดเยี่ยมแน่นอน ฉันใช้มันมาระยะหนึ่งแล้วก็สามารถเดิมพันได้
biocyberman

18

นอกจากคำแนะนำของ Dmitry แล้ว ปลั๊กอินเสียงเซอร์ราวด์ การเพิ่มวงเล็บในข้อความที่เน้นสีสามารถทำได้ด้วยคำสั่งต่อไป

xi()<Esc>P

คุณสามารถตั้งค่าแผนที่ในโหมดภาพโดยใช้ (ตัวอย่าง) \s โดยเพิ่มสิ่งต่อไปนี้ใน ~/.vimrc ไฟล์:

xnoremap <leader>s xi()<Esc>P

1
ดูเหมือนว่าเป็นทางออกที่ดีและเรียบง่าย หากฉันไม่พบปัญหาใด ๆ เกี่ยวกับสิ่งนี้ในอนาคตฉันจะชอบมากกว่าปลั๊กอินอื่น ๆ ขอบคุณ!
Zelphir

3
มันเป็นวิธีแก้ปัญหาที่ดี แต่ไม่ค่อยสมบูรณ์เท่าการใช้งานปลั๊กอินเซอร์ราวด์เพราะมันไม่ทำงานหากคุณเลือกทั้งบรรทัด V แทน v ) ในกรณีนี้มันแค่วางบรรทัดด้านล่างพ่อแม่ของคุณ
Rohan Orton

1

วงเล็บ lh เพียงแค่ผูก ( เพื่อล้อมรอบส่วนที่เลือกด้วยวงเล็บ แตกต่าง รอบทิศทาง มันไม่ได้เป็นไปตามปรัชญาของ keybinding ตามปกติ ต้องใช้แป้นน้อยลง

มิฉะนั้นมีหลายวิธีที่จะดำเนินการต่อไป หากคุณไม่รังเกียจที่จะลงทะเบียนชื่อคุณก็ใช้ s(^R")<esc> ( ^R ชอบ CTRL-R )


0

จากคำตอบของดอโคเฮนฉันใส่สิ่งต่อไปนี้ในของฉัน .vimrc:

xnoremap <leader>( <ESC>`>a)<ESC>`<i(<ESC>

คุณสามารถทำการแมปที่คล้ายกันได้อย่างง่ายดายสำหรับ [], {}, ฯลฯ มันทำงานได้โดยการกระโดดไปที่เครื่องหมายเริ่มต้นและสิ้นสุดที่ตั้งค่าโดยนัยหลังจากสิ้นสุดโหมดภาพ วิธีนี้การเลือกทั้งบรรทัดจะเพิ่ม parens ที่จุดเริ่มต้น / สิ้นสุดของบรรทัดแรก / สุดท้าย มันจะไม่เขียนทับทะเบียน yank ของคุณ; และมันจะออกจากเคอร์เซอร์ทันทีก่อนเปิด paren

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.