มีฟังก์ชั่นใน Vim ที่อนุญาตให้เพิ่มวงเล็บในข้อความที่เน้นสีหรือไม่?
ตัวอย่างเช่นถ้าฉันเน้น n = getchar()
ใน if (n = getchar() == '\n')
ฉันต้องการใส่วงเล็บไว้รอบ ๆ
มีฟังก์ชั่นใน Vim ที่อนุญาตให้เพิ่มวงเล็บในข้อความที่เน้นสีหรือไม่?
ตัวอย่างเช่นถ้าฉันเน้น n = getchar()
ใน if (n = getchar() == '\n')
ฉันต้องการใส่วงเล็บไว้รอบ ๆ
คำตอบ:
คุณต้องมีปลั๊กอินที่ยอดเยี่ยมและต้องมี รอบทิศทาง . จากนั้นมันจะทำสิ่งที่คุณต้องการอย่างมีความสุขหากคุณเลือกข้อความและประเภท Sb
(เซอร์ราวด์ - วงเล็บปีกกา) หรือ S)
(สังเกตเมืองหลวง S!)
จริง ๆ แล้วมันสามารถทำได้หลายอย่างรอบตัว: คำพูดต่าง ๆ แท็ก ฯลฯ มันช่วยให้คุณใส่เคอร์เซอร์ในคำที่ยกมาสองคำ cs"'
(การเปลี่ยนแปลงรอบทิศทาง "
ไปยัง '
) หรือคุณสามารถลบเครื่องหมายคำพูดได้โดยพิมพ์ ds"
(ลบ-เซอร์ราวด์ "
)
อ่านเอกสารโดยลิงค์มันยอดเยี่ยมจริงๆ!
sb
(เซอร์ราวด์ - วงเล็บปีกกา) หรือ s)
.
s
เพียงลบการเลือกและเข้าสู่โหมดแทรก
นอกจากคำแนะนำของ Dmitry แล้ว ปลั๊กอินเสียงเซอร์ราวด์ การเพิ่มวงเล็บในข้อความที่เน้นสีสามารถทำได้ด้วยคำสั่งต่อไป
xi()<Esc>P
คุณสามารถตั้งค่าแผนที่ในโหมดภาพโดยใช้ (ตัวอย่าง) \s
โดยเพิ่มสิ่งต่อไปนี้ใน ~/.vimrc
ไฟล์:
xnoremap <leader>s xi()<Esc>P
V
แทน v
) ในกรณีนี้มันแค่วางบรรทัดด้านล่างพ่อแม่ของคุณ
วงเล็บ lh เพียงแค่ผูก (
เพื่อล้อมรอบส่วนที่เลือกด้วยวงเล็บ แตกต่าง รอบทิศทาง มันไม่ได้เป็นไปตามปรัชญาของ keybinding ตามปกติ ต้องใช้แป้นน้อยลง
มิฉะนั้นมีหลายวิธีที่จะดำเนินการต่อไป หากคุณไม่รังเกียจที่จะลงทะเบียนชื่อคุณก็ใช้ s(^R")<esc>
( ^R
ชอบ CTRL-R
)
จากคำตอบของดอโคเฮนฉันใส่สิ่งต่อไปนี้ในของฉัน .vimrc
:
xnoremap <leader>( <ESC>`>a)<ESC>`<i(<ESC>
คุณสามารถทำการแมปที่คล้ายกันได้อย่างง่ายดายสำหรับ [], {}, ฯลฯ มันทำงานได้โดยการกระโดดไปที่เครื่องหมายเริ่มต้นและสิ้นสุดที่ตั้งค่าโดยนัยหลังจากสิ้นสุดโหมดภาพ วิธีนี้การเลือกทั้งบรรทัดจะเพิ่ม parens ที่จุดเริ่มต้น / สิ้นสุดของบรรทัดแรก / สุดท้าย มันจะไม่เขียนทับทะเบียน yank ของคุณ; และมันจะออกจากเคอร์เซอร์ทันทีก่อนเปิด paren