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>
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!
0sem comentários ainda