Stai usando Vim. Hai uno strumento per farlo incorporato.
Com'era prevedibile, ci sono già sette risposte che dicono di usare grep
. Ma mi sembra di essere l'unica persona finora che ha notato dalla tua domanda che stai usando vim
. Pertanto, sebbene sia possibile utilizzarlo grep
dall'interno vim
, è anche possibile utilizzare lo vim
strumento integrato. Questo viene invocato tramite il :vimgrep
comando.
Per cercare "tutti i file sorgente C nella directory corrente per le chiamate alla funzione toUpperCase()
" si digita il vim
comando
:vimgrep "\<toUpperCase\_s*(" *.c
L'elenco di corrispondenze risultante viene automaticamente caricato nell'elenco di correzioni rapide, accessibile con uno dei due (consultare la guida in linea per la sottile differenza)
:copen
:cwin
Trovare la definizione della funzione , piuttosto che chiamarla, ctags
è lo strumento, come menzionato nella Gilles
risposta , in combinazione con i comandi :tjump
o :tselect
.
Perché l'uso :vimgrep
?
L'help on-line ( :help grep
) enumera molte delle ragioni, che non pappagallo qui. Oltre a quelli, confronta l'azione di :vimgrep
con quella della dietbuddha
risposta . dietbuddha
La riga di comando genera un singolo grep
processo per ogni singolo file sorgente C. Non ha nemmeno bisogno xargs
di ridurre questo sovraccarico. E devi ancora in qualche modo analizzare l'output per invocare il tuo editor di testo sui file sorgente pertinenti una volta che è finito. :vimgrep
non interrompe più processi aggiuntivi e l'utilizzo del risultato è la semplicità stessa. Selezionando semplicemente una delle voci nell'elenco risultante della correzione rapida si posiziona automaticamente il cursore sulla riga pertinente del file sorgente pertinente.
In effetti, fa esattamente quello che hai scritto che faresti a mano, tranne automaticamente. È il modo automatizzato di eseguire quelle azioni dell'editor di testo. Carica il file come se fosse caricato a mano, cerca un'espressione regolare (utilizzando la stessa sintassi di espressioni regolari che stai già utilizzando altrove vim
), registra i luoghi in cui si verificano le corrispondenze e quindi scarica il file.