So löschen Sie bestimmte Zeilen im Vim-Editor

So löschen Sie bestimmte Zeilen im Vim-Editor

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 ...).
  • :dlöscht die Zeilen.

Wenn es nur eine Zeile oder ein Zeilenbereich ist, können Sie :<num>d„oder“ verwenden :<start>,<end>d(z. B. :5dfür die fünfte Zeile oder :9,16dfü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

verwandte Informationen