類似於 Vim 中的 J 指令,但採取一個動作

類似於 Vim 中的 J 指令,但採取一個動作

我喜歡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

相關內容