
我喜歡J
連接多行的命令,但不喜歡必須計算要連接的行數。我更願意提出一項動議。這可以透過以下方式偽造V{motion}J
:有沒有一種方法不涉及進入視覺模式(因此破壞寄存器*
)?
答案1
我認為沒有預設的連接運算子。但你可以使用這段程式碼,來自一個關於同一主題的舊 Vim 線程:
nnoremap J :set operatorfunc=Joinoperator<CR>g@
nnoremap gJ :set operatorfunc=GJoinoperator<CR>g@
onoremap J j
func! Joinoperator(submode)
'[,']join
endfunc
func! GJoinoperator(submode)
'[,']join!
endfunc
請注意,使用此程式碼片段將無法用於J
連接一對線——有必要使用Jj
(或JJ
由於omap J j
)。
答案2
你可以這樣做:
:.,/pattern/join
本質上,你告訴 Vim 連接一系列行,.
即遊標所在的當前行,最後一行是 的第一個匹配項pattern
。