Jak usunąć wszystkie wiersze, które NIE zawierają określonego słowa w Vimie?

116

W vimie mogę z tym usunąć wszystkie wiersze zawierające słowo „cena”

:g /price/d

Jak mogę usunąć wszystkie wiersze, które NIE zawierają słowa „cena”?

digitaljoel
źródło
1
Czy to pytanie można przenieść na vi.stackexchange.com ? Próbowałem oflagować go do migracji, ale nie mogłem tego rozgryźć.
Mu Mind
@MuMind Tu jest temat, więc nie ma potrzeby migracji . „ Nie przeprowadzaj migracji ze względu na migrację. Migrujemy pytania tylko dlatego, że są one nie na temat w oryginalnej witrynie . Pytanie może dotyczyć wielu tematów, ale nie jest to powód do migracji w innym miejscu, chyba że PO zażąda migracji. ” Ponadto tylko pracownicy SE mogą migrować po 60 dniach i bardzo rzadko to robią (nawet moderatorzy nie mogą migrować starego pytania).
8bittree

Odpowiedzi:

157

Możesz użyć

:%g!/price/d

aby usunąć każdy wiersz, który nie zawiera „ceny”

Yab
źródło
3
Wiedziałem, że to będzie łatwe ...
digitaljoel
35
:g!jest również znany jako :v(podobny do grep -v).
Chris Johnsen
3
Czego %zrobić?
hippietrail
4
%to specjalny zakres w tym kontekście, który oznacza cały plik. Zobaczyć :help cmdline-ranges.
Heptyt
1
%jest opcjonalny, ponieważ domyślnym zakresem jest cały bufor.
stillanoob
26

Możesz także użyć:

:v/price/d

aby usunąć linie.

MOHRE
źródło
1
Fwiw - Wygląda na gto,v że jest „globalny” i „odwrotny” (jeśli wierzysz w to, co czytasz na vim.famdom).
ruffin
help :vin vim to potwierdza
Paddy3118