Ich habe zwei Zeilen in einer Textdatei wie unten:
S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT
Ich möchte die beiden Zeilen in vi wie folgt anhängen:
S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
Die zweite Zeile wurde gelöscht und der Inhalt der zweiten Zeile an die erste Zeile angehängt.
Wie kann ich das im Befehlsmodus in vi machen?
GJ
Invim
wechselt zur letzten Zeile und versucht dann, sie mit der nächsten Zeile zu verbinden. Die einzige Stelle, an der ein Join-Befehl keinen Sinn ergibt. Ja, ich fand das lustig :-)Vi oder Vim?
Auf jeden Fall funktioniert der folgende Befehl für Vim im nicht kompatiblen Modus. Das ist wohl fast reines vi.
Wenn Sie dies mit dem normalen Befehl tun möchten, verwenden Sie
Mit 'gJ' verbinden Sie Linien wie sie sind - ohne Leerzeichen hinzuzufügen oder zu entfernen:
Ergebnis:
Mit dem Befehl 'J' haben Sie:
Beachten Sie den Abstand zwischen
type>
und_ID
.quelle
g/pattern/join
in VIMg/pattern/J
funktioniert, während dies nicht der Fall ist. Könnte einigen zukünftigen Menschen helfen.Dies sollte es tun:
J
quelle
:h J
Sie erfahren, wie Sie diese Funktion deaktivieren.gJ
Sie dieseIn vi
J
(das ist Shift+ J) oder:join
sollte zum größten Teil tun, was Sie wollen. Beachten Sie, dass sie Leerzeichen anpassen. Insbesondere wird in vielen Fällen ein Leerzeichen zwischen den beiden verbundenen Linien angezeigt. Wenn die zweite Linie eingerückt ist, wird diese Einrückung vor dem Verbinden entfernt.In Vim können Sie auch
gJ
( G, dann Shift+ J) oder verwenden:join!
. Diese verbinden Linien, ohne Leerzeichen anzupassen.:help J
Weitere Informationen finden Sie in Vim .quelle
gJ
undJ
ist , dass sowohl chang der Cursor an den Verbindungspunkt, aber:join!
und:join
tun sie nicht.Ersetzen Sie einfach das "
\n
" durch "".In vi / Vim für jede Zeile im Dokument:
Wenn Sie jeden Austausch bestätigen möchten:
quelle
Wenn Sie die ausgewählten Linien verbinden möchten (Sie befinden sich im visuellen Modus), drücken
gJ
Sie einfach , um Ihre Linien ohne Leerzeichen zu verbinden.Dies wird auf der vi / Vim Stack Exchange-Site ausführlicher beschrieben .
quelle
Drücken Sie in der ersten Zeile Shift+ 4("$") und dann Shift+ j("J").
Und wenn Sie Hilfe benötigen, gehen Sie zu vi und drücken Sie F1.
quelle
In Vim können Sie auch verwenden
gJ
.ََ
quelle
Eine andere Möglichkeit, zwei Zeilen zu verbinden, ohne den Cursor auf diese Zeile zu setzen, ist:
Hier ist 6 die Zeilennummer, mit der eine weitere Zeile verbunden wird. Verwenden Sie zum Anzeigen der Zeilennummer
:set nu
.Wenn wir uns auf dem Cursor befinden, an dem die nächste Zeile verbunden werden soll, dann:
In beiden Fällen brauchen wir nicht
g
wie:s#\n##g
, weil in einer Zeile nur eine\n
existiert.quelle
Shift+V
, alle Zeilen auszuwählen, die verbunden werden sollen, mit Ausnahme der letzten, und:'<,'>s/\n/, /
in diesem Beispiel die Zeilen zu verbinden, während am Ende jeweils ein Komma und ein Leerzeichen eingefügt werden. Beachten Sie, dass, wenn etwas ausgewählt ist und wir:
im normalen Modus tippen , das'<,'>
automatisch in der Befehlszeile angezeigt wird.