
Ich mag den J
Befehl 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, J
ein Zeilenpaar zu verbinden. Dazu muss Jj
(oder JJ
aufgrund 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
.