Você está usando o vim. Você tem uma ferramenta para fazer isso.
Previsivelmente, há sete respostas dizendo para usar grep
. Mas eu pareço ser a única pessoa até agora que percebeu pela sua pergunta que você está usando vim
. Como tal, embora você possa usar grep
de dentro de vim
, você pode também usar a ferramenta interna de vim
. Isso é chamado por meio do comando :vimgrep
.
Para pesquisar "todos os arquivos de origem C no diretório atual para chamadas à função toUpperCase()
", você digita o comando vim
:vimgrep "\<toUpperCase\_s*(" *.c
A lista de correspondências resultante é automaticamente carregada na lista de correções rápidas, acessível com qualquer uma delas (veja a ajuda on-line para a diferença sutil)
:copen
:cwin
Para encontrar a função definição , em vez de chamá-la, ctags
é a ferramenta, conforme mencionado em Gilles
'answer , em conjunto com os comandos :tjump
ou :tselect
.
Por que usar :vimgrep
?
A ajuda on-line ( :help grep
) enumera várias das razões, que não vou repetir aqui. Além disso, compare a ação de :vimgrep
com a de dietbuddha
'answer . A linha de comando de dietbuddha
bifurca um processo grep
individual para cada arquivo de origem C individual. Ele nem emprega xargs
para reduzir essa sobrecarga. E você ainda tem que, de alguma forma, analisar a saída para invocar seu editor de texto nos arquivos de origem relevantes assim que estiver terminado. :vimgrep
não separa vários processos adicionais, e usar o resultado é a própria simplicidade. A simples seleção de uma das entradas na lista de correção rápida resultante posiciona automaticamente o cursor na linha relevante do arquivo de origem relevante.
Na verdade, ele faz exatamente o que você escreveu que você faria manualmente, exceto automaticamente. É a maneira automatizada de fazer essas mesmas ações do editor de texto. Ele carrega o arquivo como se carregado manualmente, procura por uma expressão regular (usando a sintaxe de expressão regular mesmo que você já está usando em vim
), registra os locais onde as correspondências ocorrem e depois descarrega o arquivo.