2010-12-16 12 views

Antwort

22

können Sie v verwenden, um alle Zeilen ohne Muster zu wählen:
:v/pattern/d wird erreichen, was Sie tun wollen.

Siehe :help :v

+7

Die Verwendung dieses globalen Befehls scheint dem shell-Befehl vorzuziehen, weil: (1) es ein interner Vim-Befehl ist und nicht davon abhängt, ein externes grep-Dienstprogramm zu haben, was auf Windows-Systemen ein Problem sein könnte und (2) unsicher ist Shell-Filter gibt im Grunde ein völlig neues Dokument zurück, und der globale Befehl löscht nur Zeilen, ich denke, das Globale ist vorzuziehen, um die Rückgängig-Geschichte kleiner (und damit schneller) zu halten, und (3) nur allgemein ist es eine gute Idee, sich anzugewöhnen Vim globals (: g und: v), weil Sie damit beliebige Aktionen auf übereinstimmenden Zeilen durchführen können, nicht nur löschen. –

2

Eine Möglichkeit, dies zu tun haben ist mit einem Shell-Filter:

:%!grep pattern 

Dieser Befehl übergibt Ihre gesamte Datei (%) in eine Schale (!), die es durch dieläuftBefehl und gibt die Ausgabe an Ihr Editor-Fenster zurück.

+2

Mit allem Respekt, die Antwort von Xavier T ist die richtige Antwort. vim liefert ': v' für genau dieses Problem. –

+0

Ich stimme zu. Die Shell-Filter-Fähigkeit ist jedoch in sich selbst sehr nützlich. –

2

können Sie einfach das Muster negieren

:g!/pattern/d 

Dies wird alle bis auf die ausgewählten Zeilen löschen.

Verwandte Themen