Czy istnieje przeciwieństwo: g in vim?

10

Wiem, jak zrobić coś z każdą linią pasującą do wzoru, używając :g. Czy istnieje sposób, aby zrobić coś dla każdej linii, która nie pasuje do wzorca?

Załóżmy na przykład, że chcę usunąć każdą linię, która nie pasuje do / foo /. Mógłbym zrobić coś takiego:

:G/foo/d

( :Gnie jest przeciwieństwem :g, ale tego właśnie szukam)

Jakieś pomysły?

pkaeding
źródło
2
miv ni g:.
tsilb

Odpowiedzi:

17

Myślę, że w VIM występuje inwersja, ponieważ

:g!/foo/d

lub, podobnie jak greppolecenie (poniżej),

:v/foo/d

Jeśli jesteś gotowy, aby przejść do monitu powłoki,

grep -v foo filename.txt > new.txt

zrobi to

nik
źródło