Wie lösche ich alle Zeilen, die in Vim KEIN bestimmtes Wort enthalten?

116

In vim kann ich damit alle Zeilen löschen, die das Wort "price" enthalten

:g /price/d

Wie kann ich alle Zeilen löschen, die NICHT das Wort "Preis" enthalten?

digitaljoel
quelle
1
Kann diese Frage auf vi.stackexchange.com migriert werden ? Ich habe versucht, es für die Migration zu markieren, konnte es aber nicht herausfinden.
Mu Mind
@MuMind Es ist hier ein Thema, daher ist keine Migration erforderlich . " Migrieren Sie nicht um der Migration willen. Wir migrieren Fragen nur, weil sie auf der ursprünglichen Site nicht zum Thema gehören. Es ist durchaus möglich, dass eine Frage auf mehreren Sites zum Thema gehört, dies ist jedoch kein Grund für eine Migration es an anderer Stelle, es sei denn, das OP fordert eine Migration an. " Außerdem können nur SE-Mitarbeiter nach 60 Tagen migrieren, was sehr selten der Fall ist (nicht einmal Moderatoren können eine alte Frage migrieren).
8bittree

Antworten:

157

Sie können verwenden

:%g!/price/d

jede Zeile löschen, die nicht "price" enthält

Yab
quelle
3
Ich wusste, dass es einfach sein würde ...
digitaljoel
35
:g!ist auch bekannt als :v(verwandt mit grep -v).
Chris Johnsen
3
Was macht der %?
Hippietrail
4
%ist in diesem Zusammenhang ein spezieller Bereich, der die gesamte Datei bezeichnet. Sehen :help cmdline-ranges.
Heptite
1
%ist optional, da der Standardbereich den gesamten Puffer umfasst.
Stillanoob
26

Sie können auch verwenden:

:v/price/d

Zeilen löschen.

MOHRE
quelle
1
Fwiw - Sieht aus wie gfür "global" und vfür "invers" (wenn Sie glauben, was Sie auf vim.famdom lesen).
Ruffin
help :vin vim bestätigt es
Paddy3118