Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Gustavo Dutr...
Tela cheia

Buscas eficientes no Vim com vimgrep

2 de Novembro de 2009, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 390 vezes

A busca efetiva pode ajudar muito, caso bem usada, tanto no ganho de tempo como na efeciência de substituições ou refactories. Seguem alguns outros exemplos de finalidades para a busca utilizando o Vim:

  • Certeza de encontrar todas as incidências
  • Ficam visualmente destacadas (com :set hlsearch)
  • Testar substituições
  • Verificar a ortografia atrás de erros de digitação
  • Encontrar variáveis ou funções não utilizadas, só declaradas
  • Encontrar rapidamente algum termo
  • Verificar a existência de algum termo

Além da conhecida / (barra) para buscar, existe o :vimgrep. É dele que quero falar.

Vimgrep

Comando

:vim[grep][!] /{pattern}/[g][j] {files}
  • Busca inscidências de pattern nos files listados.
  • pattern pode ser uma expressão regular ou não
  • A exclamação (!) ignora as alterações já feita no arquivo atual
  • g procura por todas as inscidências, não só a primeira, em cada arquivo
  • j pula para o primeiro resultado ao executar o comando
  • files podem conter wildcards, como *, ? e **
  • Os resultados são abertos na quickfix list

Exemplos

:vimgrep! /$var/ arquivo.pl

Pesquisa pela primeira inscidência de $var no arquivo.pl

:vimgrep /texto/ *.rb

Busca por texto em todos os arquivos com a extensão .rb do diretório atual (para descobrir qual o diretório atual, use :pwd. Para mudar :cd dir)

:vimgrep /TeXtO/ *.py dir/*.py

Busca com case-sensitive em todos os arquivos .py do diretório atual e dos dentro do diretório dir/.

:vimgrep /minhaFuncao/g **/*.c

Busca recursiva dentro da árvore de diretórios do diretório atual cuja extensão seja .c

:vimgrep /< \([^ ]\+\)[^>]*>.\+< \/\1>/ index.html

Busca usando expressões regulares também são permitidas!

Navegando na QuickFix List

  • :copen
  • :cfirst
  • :cprevious
  • :cnext
  • :clast
  • :cclose

Como nosso foco é a eficiência, podemos criar mapeamentos para andar pela quickfix list!

map <F9> :copen<CR>
map <F10> :cclose<CR>
map <A-j> :cnext<CR>
map <A-k> :cprevious<CR>
Exemplo de uso do vimgrep

Exemplo de uso do vimgrep

Conclusão

Esse recurso não parece ser muito abordado por ai, mas é extremamente importante. Seja criativo e descubra onde melhor usar o :vimgrep! Tenho certeza de que vai lhe ajudar! E quando encontrar, comente ai!


Fonte: http://gustavodutra.com/post/296/buscas-eficientes-no-vim-com-vimgrep/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.