Die gJ
Kombination macht das; von :help gJ
:
Verbinden Sie [count] Zeilen mit mindestens zwei Zeilen. Fügen Sie keine Leerzeichen ein oder entfernen Sie sie nicht.
Sie können es erneut binden J
, wenn Sie einen Tastendruck speichern möchten:
:nnoremap J gJ
Beachten Sie, dass dies nicht entfernen Sie alle Leerzeichen, so dass , wenn entweder die aktuelle Zeile mit einem Leerzeichen endet oder nächste Zeile beginnt mit einem oder mehreren Leerzeichen, werden sie bleiben wie .
Damit:
Hello
world
Wird:
Hello world
Wir konnten verwenden Jx
in diesem Fall, dann wird es sein Helloworld
, aber das wird nicht in allen Fällen arbeiten; aus der hilfe:
Verbinden Sie die hervorgehobenen Linien mit mindestens zwei Linien. Entfernen Sie den Einzug und fügen Sie bis zu zwei Leerzeichen ein
[...]
Diese Befehle, mit Ausnahme von "gJ", fügen anstelle des Leerzeichens ein Leerzeichen ein, es sei denn, es wird ein Leerzeichen nachgestellt oder die nächste Zeile beginnt mit einem ')'.
In einigen Fällen wird also mehr als ein Leerzeichen oder kein Leerzeichen eingefügt. Soweit ich sehen kann, gibt es keine einfache Möglichkeit, dieses Verhalten zu ändern. Ich habe eine Funktion zum Ändern erstellt, um gJ
immer ohne Leerzeichen zu verbinden:
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
Siehe auch: :help J
,:help 'joinspaces'
Ein weiterer Trick, den Sie versuchen können, ist das Ersetzen. Manchmal kann dies nützlich sein.
Szenario: Löschen Sie das letzte Zeichen und verbinden Sie es mit der nächsten Zeile:
Zum Beispiel,
wird:
quelle
Erstellen Sie ein Makro und verwenden Sie es erneut:
qaJxq
Spielen Sie nun das Makro
a
an einer @abeliebigen Stelle ab, an der Sie zwei Zeilen ohne Leerzeichen verbinden möchten.@@wiederholt das vorherige Makro. Sie können also einfach gedrückt halten @, um mehrere Zeilen zu verbinden.
quelle
@a
wenn Sie tippen könnenJx
? Gleiche Anzahl von Tasten- und UMSCHALTTASTEN!3@a
3 Zeilen verbinden können, während bei diesem Befehl3Jx
3 Zeilen mit Leerzeichen verbunden werden und dann das Leerzeichen zwischen der zweiten und dritten Zeile gelöscht wird, wobei Leerzeichen zwischen den anderen Zeilen verbleiben.So verbinden Sie sich immer mit einem einzelnen Leerzeichen:
So verbinden Sie sich mit überhaupt keinem Leerzeichen (entfernt das abschließende + führende Leerzeichen):
quelle
Wählen Sie die Zeilen aus, die Sie zusammenführen möchten, und geben Sie einen Ex- Befehl ein, indem Sie
:
im normalen Modus einen Doppelpunkt eingeben . Dann geben Sie diesen Befehl ein:s/$\n\s*//gc
Der gesamte Befehl sollte ebenfalls aussehen:
:'<,'>s/$\n\s*//gc
Erläuterung:
'<,'>
bedeutet, dass wir nur die im visuellen Modus ausgewählten Linien ändern./$\n\s*
ist ein Regex- Muster. Wir suchen eine Übereinstimmung, die$
mit einem neuen Zeilenzeichen endet\n
und danach eine nicht festgelegte Anzahl von Leerzeichen aufweist*
.s/pattern//gc
ist ein Ersatzbefehl, mit dem jedes Muster gesucht und bei der Bestätigung durch ein leeres Zeichen ersetzt wird.quelle