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 

このスニペットを使用すると、 を使用して 2 本の線を結合することはできないことに注意してください。のため、(または)Jを使用する必要があります。JjJJomap J j

答え2

次のようなことができます:

:.,/pattern/join

.基本的には、カーソルがある現在の行と、 の最初の一致である最後の行を含む行の範囲を結合するように Vim に指示しますpattern

関連情報