
複数の行を結合するコマンドは気に入っています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
このスニペットを使用すると、 を使用して 2 本の線を結合することはできないことに注意してください。のため、(または)J
を使用する必要があります。Jj
JJ
omap J j
答え2
次のようなことができます:
:.,/pattern/join
.
基本的には、カーソルがある現在の行と、 の最初の一致である最後の行を含む行の範囲を結合するように Vim に指示しますpattern
。