Como excluir todas as linhas que NÃO contêm uma determinada palavra no Vim?

116

No vim, posso excluir todas as linhas que contêm a palavra "preço" com este

:g /price/d

Como posso excluir todas as linhas que NÃO contêm a palavra "preço"?

digitaljoel
fonte
1
Esta pergunta pode ser migrada para vi.stackexchange.com ? Tentei sinalizá-lo para migração, mas não consegui descobrir.
Mu Mente
@MuMind Está no tópico aqui, então não há necessidade de migrar . " Não migre por uma questão de migração. Somente migramos perguntas porque elas estão fora do tópico no site original . É perfeitamente possível que uma pergunta esteja no tópico em vários sites, mas esse não é um motivo para migrar. em outro lugar, a menos que o OP solicite a migração ". Além disso, apenas os funcionários da SE podem migrar após 60 dias e é muito raro que eles façam (nem mesmo os moderadores podem migrar uma pergunta antiga).
8bittree

Respostas:

157

Você pode usar

:%g!/price/d

para excluir todas as linhas que não contenham "preço"

Yab
fonte
3
Eu sabia que ia ser fácil ...
digitaljoel
35
:g!também é conhecido como :v(semelhante a grep -v).
Chris Johnsen
3
O que %faz?
Hippietrail 30/10/12
4
%é um intervalo especial nesse contexto que significa o arquivo inteiro. Veja :help cmdline-ranges.
Heptite 30/10/12
1
%é opcional, pois o intervalo padrão é o buffer inteiro.
stillanoob 6/02
26

Você também pode usar:

:v/price/d

para excluir linhas.

MOHRE
fonte
1
Fwiw - Parece que gé para "global" e v"inverso" (se você acredita no que lê no vim.famdom).
ruffin 11/04
help :vno vim confirma isso
Paddy3118 11/06