Angenommen, ich habe 50 Zeilen in meinem Vim-Editor und muss bestimmte Zeilen (5, 9, 16, 28) mit einem einzigen Befehl löschen.
Antwort1
Die gleichzeitige Bearbeitung mehrerer Zeilen ist umständlich, aber möglich:
:g/\v%5l|%9l|%16l|%28l/d
:g/.../
- Reagieren Sie auf Zeilen, die dem Muster entsprechen/.../
.\v
-sehr magisch, weniger Escape-Zeichen für Sonderzeichen in regulären Ausdrücken.%<num>l
- Übereinstimmung mit der Zeilennummer<num>
(also%5l|%9l|...
Übereinstimmung mit der 5. Zeile oder der 9. Zeile oder ...).:d
löscht die Zeilen.
Wenn es nur eine Zeile oder ein Zeilenbereich ist, können Sie :<num>d
„oder“ verwenden :<start>,<end>d
(z. B. :5d
für die fünfte Zeile oder :9,16d
für den Zeilenbereich von der 9. bis zur 16. Zeile (einschließlich).
Antwort2
:5d|9d|16d|28d
So werden vier einzelne Befehle hintereinander gesetzt. Aber besser umgedreht:
:28d|16d|9d|5d
Um die Nummerierung konstant zu halten.
Eine flexiblere Möglichkeit ist die Verwendung von Vimscript. In einer Zeile zusammengefasst lautet das:
:for n in [28,16,9,5] | call deletebufline("%",n,n) | endfor