Gibt es eine Möglichkeit, die neue Zeile am Ende einer Zeile in Vim zu löschen, sodass die nächste Zeile an die aktuelle Zeile angehängt wird?
Beispielsweise:
Evaluator<T>():
_bestPos(){
}
Ich möchte dies alles in eine Zeile setzen, ohne Zeilen zu kopieren und in die vorherige einzufügen. Es scheint, als ob ich in der Lage sein sollte, meinen Cursor an das Ende jeder Zeile zu setzen, eine Taste zu drücken und die nächste Zeile auf dieselbe Zeile springen zu lassen, auf der sich der Cursor befindet.
Endresultat:
Evaluator<T>(): _bestPos(){ }
Ist das in Vim möglich?
Antworten:
Wenn Sie sich in der ersten Zeile befinden, wird durch Drücken von (Großbuchstaben) Jdiese Zeile und die nächste Zeile miteinander verbunden, wodurch die neue Zeile entfernt wird. Sie können dies auch mit einer Zählung kombinieren. Wenn Sie also drücken,
3J
werden alle drei Zeilen miteinander kombiniert.quelle
gJ
wird das Hinzufügen von Leerzeichen vermieden, die Vim bei der Verwendung möglicherweise hinzufügtJ
.V
(Visual Line Mode), und dannJ
odergJ
:join
und dies:join!
verbindet Linien, wobei die Cursorposition beibehalten wird und kein Leerzeichen am Verbindungspunkt verbleibt. Sie können es auch wie folgt zuordnen:nnoremap <Leader>j :joing<cr>
undnnoremap <Leader>gj :join!<cr>
.Bestimmt. Vim erkennt das Zeichen \ n als Zeilenumbruch, sodass Sie es einfach suchen und ersetzen können. Geben Sie im Befehlsmodus Folgendes ein:
quelle
V
visuellen Block auswählen und darüber ersetzen.Drücken Sie im normalen Modus in der oberen Zeile Shift+ j.
Sie können auch eine Zählung voranstellen, sodass
3J
in der obersten Zeile alle diese Zeilen zusammengefügt werden.quelle
Wie in anderen Antworten erwähnt, können (Großbuchstaben)
J
und Suchen + Ersetzen nach\n
allgemein verwendet werden, um Zeilenumbrüche zu entfernen und Zeilen zu verketten.Um das nachgestellte Zeilenumbruchzeichen in der letzten Zeile zu entfernen , müssen Sie dies in Vim tun:
quelle
:set noendofline
funktioniert das nicht ohnebinary
?J
löscht zusätzlichen führenden Abstand (falls vorhanden) und verbindet Linien mit einem einzelnen Leerzeichen. (Mit einigen Ausnahmen:/[.!?]$/
Nachher können zwei Leerzeichen eingefügt werden; Vorher/^\s*)/
werden keine Leerzeichen eingefügt.)Wenn Sie dieses Verhalten nicht möchten,
gJ
entfernen Sie einfach den Zeilenumbruch und machen mit Leerzeichen überhaupt nichts Kluges.quelle
Alle folgenden setzen voraus, dass sich Ihr Cursor in der ersten Zeile befindet:
Verwenden normaler Zuordnungen:
3Shift+J
Verwenden von Ex-Befehlen:
Welches ist eine Abkürzung von
Was auch über die folgende Verknüpfung eingegeben werden kann:
3:j
Ein noch kürzerer Ex-Befehl:
quelle
:j!3
In Ihrer .vimrc-Datei können Sie
backspace
unddelete
on\n
(newline) im Einfügemodus verwenden.Mit dieser Option können Sie den vorherigen LF im normalen Modus mit löschen
X
(in Spalte 1).quelle
Es hängt wahrscheinlich von Ihren Einstellungen ab, aber ich mache das normalerweise mit
A<delete>
Wo
A
wird am Ende der Zeile angehängt. Es erfordert wahrscheinlichnocompatible
Modus :)quelle
Cursor in der ersten Zeile
JETZT im NORMALEN MODUS
oder
: normales V2jJ
quelle
Ich würde einfach A (an Zeilenende anhängen, versetzt Sie in den Einfügemodus) in der Zeile drücken, in der Sie die neue Zeile entfernen möchten, und dann Löschen drücken.
quelle
:help 'backspace'
Wenn es Ihnen nichts ausmacht, andere Shell-Tools zu verwenden,
quelle
ggVGJ
.Das Problem ist, dass sich unsichtbare Vielfache char 0A (\ n) ansammeln können. Angenommen, Sie möchten von Zeile 100 bis zum Ende aufräumen:
Eingabe von ESC und: (Terminal Commander)
In einem Vim-Skript:
Erläuterung: Suchen Sie von 110 bis zum Ende nach Zeilen, die mit einer neuen Zeile beginnen (leer sind), und entfernen Sie sie
quelle