É possível mostrar / ocultar todas as linhas correspondentes no vi ou no Vim? Não destacar, mas apenas mostrar essas linhas.
Por exemplo, tenho um texto com palavra a palavra ERROR
. Como faço para mostrar apenas linhas contendo ERROR
e como mostrar apenas linhas sem ERROR
?
Existe uma solução sem excluir todas as linhas correspondentes e apenas desfazê-las?
Respostas:
Você sabe sobre o
:global
comando? Isso faz o que você quer?e pelo contrário:
ou equivalente:
fonte
g<
para ver novamente, ou@:
se você não tiver executado e comandos.Outra abordagem, dependendo do seu caso de uso, seria usar o vimgrep e seus resultados na correção rápida . Você pode fazer o seguinte:
:vimgrep pattern %
irá pesquisar o arquivo atual e levá-lo ao primeiro resultado da pesquisa. Mais importante, também coloca os resultados na "lista de correções rápidas".:copen
irá então abrir a lista de correção rápida em uma janela de correção rápida separada. Portanto, você terá uma janela separada com todas as linhas de seu último vimgrep. Dentro da janela de correção rápida, você pode pressionar Enter ou clicar duas vezes em uma linha para pular para a linha correspondente em seu arquivo original.:colder
permitirá que você volte para listas de correção rápida mais antigas (resultados vimgrep mais antigos). E:cnewer
avança para resultados de pesquisa mais recentes.Observe que a lista de correções rápidas também é atualizada durante a execução
:make
(por isso é chamada de correção rápida para corrigir erros). Por causa disso, também existe uma alternativa para a lista de correções rápidas denominada "lista de locais". Para usá-lo, em vez de utilizar:lvimgrep
, em seguida, usar os comandos prefixados-l em vez de comandos c-prefixado -:lopen
,:lolder
,:lnewer
.Há, é claro, muito mais que você pode fazer. Veja
:help quickfix
para mais informações.PS, você disse que não queria uma abordagem que exclua linhas e depois as desfaça. Mas como você marcou
g/ERROR
como a resposta, pensei em apontar uma maneira rápida e suja de fazerg!/ERROR/d
. Você pode desfazê-lo facilmente usandou
. Além disso, para sua informação, você pode fazer:set hlsearch
para destacar padrões combinados com:g
comandos.fonte
Você pode usar
imprimir todas as linhas com ERROR
Também existe um plugin Vim que eu vi muitas vezes, mas não usei: foldsearch: dobrar linhas que não correspondem a um determinado padrão
fonte
A melhor maneira de fazer isso é->
Isso abrirá a lista de correspondências para sua palavra-chave e também mostrará apenas as linhas correspondidas na janela de correção rápida.
Substitua% pelo caminho para o arquivo, se não considerar o arquivo atual.
fonte
:vimgrep /something/g % | copen
funciona muito bem. Também:g/<pattern>/d
pode ser usado para excluir linhas com o padrãofonte
caso você use,
fzf
você pode usar::Lines
em todos os arquivos abertos:BLines
apenas em buffer aberto:Rg [pattern]
usandoripgrep
fonte
Alguma maneira suja de hack de fazer isso:
fonte
Você provavelmente quer dizer comando em less vi vim & / pattern / que mostra linhas contendo / pattern / (como grep).
fonte