Questão Como excluir todas as linhas que não contêm uma determinada palavra no Vim?


No vim eu posso apagar todas as linhas que contenham a palavra "preço" com este

:g /price/d

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


86


origem


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


Respostas:


Você pode usar

:%g!/price/d

para excluir todas as linhas que não contêm "preço"


121



Eu sabia que seria fácil ... - digitaljoel
:g! também é conhecido como :v (semelhante a grep -v). - Chris Johnsen
O que faz o % Faz? - hippietrail
% é um intervalo especial neste contexto que significa todo o arquivo. Vejo :help cmdline-ranges. - Heptite


Você também pode usar:

:v/price/d

para apagar linhas.


13





%!grep "price"

é outra opção que pode ser consideravelmente mais rápida do que :v para arquivos grandes.

Testado no Vim 7.4, Ubuntu 14.04, arquivo de log da linha 1M.

Linhas que contêm palavra: https://stackoverflow.com/questions/1725265/how-can-i-delete-all-lines-that-do-not-begin-with- certain-characters/42714334#42714334


3