การgJ
รวมกันทำสิ่งนี้; จาก:help gJ
:
เข้าร่วม [count] บรรทัดอย่างน้อยสองบรรทัด อย่าแทรกหรือลบช่องว่างใด ๆ
คุณสามารถปฏิเสธได้J
หากคุณต้องการบันทึกการกดแป้น:
:nnoremap J gJ
โปรดทราบว่านี้ไม่ได้ลบช่องว่างใด ๆ ดังนั้นหากทั้งบรรทัดปัจจุบันจะสิ้นสุดลงด้วยช่องว่างหรือบรรทัดถัดไปเริ่มต้นด้วยหนึ่งหรือมากกว่าหนึ่งช่องว่างที่พวกเขาจะถูกทิ้งไว้ตามที่เป็นอยู่
ดังนั้น:
Hello
world
กลายเป็น:
Hello world
เราสามารถใช้Jx
ในกรณีนี้ได้Helloworld
แต่จะไม่สามารถใช้ได้ในทุกกรณี จากความช่วยเหลือ:
เข้าร่วมบรรทัดที่เน้นด้วยอย่างน้อยสองบรรทัด ลบการเยื้องและแทรกสูงสุดสองช่องว่าง
[ ... ]
คำสั่งเหล่านี้ยกเว้น "gJ" แทรกหนึ่งช่องว่างแทนเว้นวรรคเว้นวรรคหรือบรรทัดถัดไปขึ้นต้นด้วย ')'
ดังนั้นในบางกรณีมากกว่าหนึ่งช่องว่างหรือไม่มีช่องว่างถูกแทรก เท่าที่ฉันเห็นไม่มีวิธีง่ายๆในการเปลี่ยนแปลงพฤติกรรมนี้ ฉันสร้างฟังก์ชันเพื่อปรับเปลี่ยนgJ
ให้เข้าร่วมโดยไม่มีช่องว่างเสมอ:
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
ดูเพิ่มเติมที่: :help J
,:help 'joinspaces'