มีฟังก์ชั่นใน 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