Você está usando o vim. Você tem uma ferramenta para fazer isso embutido.
Previsivelmente, já existem sete respostas dizendo para usar grep. Mas pareço ser a única pessoa até agora que notou da sua pergunta que você está usando vim. Como tal, embora você possa usar grepde dentro vim, você também pode usar vima ferramenta interna . Isso é chamado através do :vimgrepcomando
Para pesquisar "todos os arquivos de origem C no diretório atual para chamadas para a função toUpperCase()", digite o vimcomando
:vimgrep "\<toUpperCase\_s*(" *.c
A lista de correspondências resultante é carregada automaticamente na lista de correções rápidas, acessível por qualquer um dos dois (consulte a ajuda on-line para saber a diferença sutil)
:copen
:cwin
Encontrar a definição da função , em vez de chamá-la, ctagsé a ferramenta, conforme mencionado na Gillesresposta de , em conjunto com os comandos :tjumpou :tselect.
Por que usar :vimgrep?
A ajuda on-line ( :help grep) enumera vários dos motivos, que não serão exibidos aqui. Além disso, compare a ação :vimgrepcom a da dietbuddharesposta . dietbuddhaA linha de comando do bifurca um grepprocesso individual para cada arquivo de origem C. Nem sequer é empregado xargspara reduzir essa sobrecarga. E você ainda precisa analisar de alguma forma a saída para chamar seu editor de texto nos arquivos de origem relevantes, uma vez finalizado. :vimgrepnão realiza múltiplos processos adicionais, e usar o resultado é a própria simplicidade. Simplesmente selecionar uma das entradas na lista de correções resultantes resultante automaticamente posiciona o cursor na linha relevante do arquivo de origem relevante.
De fato, ele faz exatamente o que você escreveu à mão, exceto automaticamente. É a maneira automatizada de executar essas ações do editor de texto. Ele carrega o arquivo como se fosse carregado manualmente, procura uma expressão regular (usando a mesma sintaxe de expressão regular que você já está usando em outros lugares vim), registra os locais onde as correspondências ocorrem e, em seguida, descarrega o arquivo.