Isso excluiria todas as linhas que não contiverem foo
.
:g/^\(.*foo\)\@!.*$/d
Em vez disso, você também pode usar :v
para reverter o sentido do padrão de pesquisa.
:v/\(foo\)/d
Você pode ler mais sobre a forma como :g
e :v
funcionam aqui .
E mais sobre definição de intervalos, uso de metacaracteres, etc. para pesquisar e substituir aqui .