Löschen Sie Zeilen, die einem Muster entsprechen, von einer bestimmten Zeile bis zum Ende der Datei

9

Wenn ich eine Datei mit vielen Kommentaren habe und alle Kommentare aus Zeile 3 bis zum Ende der Datei löschen möchte, wie geht das am besten?

Ich stecke fest, da das, was ich zuerst versucht habe, nicht ganz das zu tun scheint, was ich will:

:3,$/^#/d

Anstatt nach dem Muster zu suchen und damit Zeilen im Bereich von 3 bis zum Ende der Datei zu löschen, werden alle Zeilen von 3 bis durch eine Zeile gelöscht, die dem Muster entspricht, und dann angehalten.

Wie wende ich einen ex-Befehl auf eine Reihe von Zeilen an? In diesem Fall ist es bis zum Ende einer Datei, aber wäre es anders, wenn ich es mit einer Marke oder zwischen den Zeilen 10 und 20 oder anderen Bereichen machen würde?

Eric Renouf
quelle

Antworten:

14

Verwenden Sie dazu den :globalBefehl:

:3,$g/^#/d

Sie können es auf Linien anwenden, die nicht zu einem Muster passen:

:3,$g!/^#/d

Sie können damit den Vollbereichsmechanismus verwenden (siehe :help :range):

:.,/#define/+3g/^#/d

Und Sie können es mit jedem Befehl verwenden:

:3,$g/^#/s/foo/bar/g

Es ist einer der mächtigsten Befehle in Vim. Weitere :help :globalInformationen finden Sie hier.

lcd047
quelle
Sie können auch :3,$v/foo/dLinien verwenden, die keinem Muster entsprechen. :h vglobal
Vappolinario