Wie der J-Befehl in Vim, aber nehmen Sie eine Bewegung

Wie der J-Befehl in Vim, aber nehmen Sie eine Bewegung

Ich mag den JBefehl zum Verbinden mehrerer Zeilen, möchte aber nicht zählen müssen, wie viele Zeilen ich verbinden möchte. Ich würde lieber eine Bewegung machen. Dies kann mit vorgetäuscht werden V{motion}J; gibt es eine Möglichkeit, bei der man nicht in den visuellen Modus wechseln muss (und somit das *Register überschreibt)?

Antwort1

Ich glaube, es gibt keinen Standard-Join-Operator. Aber Sie können diesen Code verwenden, vonein alter Vim-Thread zum gleichen Thema:

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 

Beachten Sie, dass es bei Verwendung dieses Snippets nicht möglich sein wird, Jein Zeilenpaar zu verbinden. Dazu muss Jj(oder JJaufgrund von omap J j) verwendet werden.

Antwort2

Sie können beispielsweise Folgendes tun:

:.,/pattern/join

Im Wesentlichen sagen Sie Vim, dass es einen Zeilenbereich verbinden soll, .wobei sich der Cursor auf der aktuellen Zeile befindet und die letzte Zeile die erste Übereinstimmung von ist pattern.

verwandte Informationen