Esistono diversi modi per farlo.
All'interno della directory corrente
Se si desidera eseguire la ricerca / sostituzione in una struttura di progetto, è possibile utilizzare l' elenco degli argomenti di Vim .
Basta aprire Vim e quindi utilizzare il :argscomando per popolare l'elenco degli argomenti. Puoi passare più nomi di file o persino globs.
Ad esempio, :args **/*.rbcercherà ricorsivamente nella directory corrente i file ruby. Nota che è anche come aprire Vim con vim **/*.rb. Puoi anche usare il findcomando della shell per ottenere un elenco di tutti i file nella directory corrente eseguendo:
:args `find . -type f`
È possibile visualizzare l'elenco args corrente eseguendolo :argsda solo. Se si desidera aggiungere o eliminare file dall'elenco, è possibile utilizzare :argaddo:argdelete rispettivamente comandi o.
Una volta che sei soddisfatto dell'elenco, ora puoi usare Vim's potente :argdo comando di che esegue un comando per ogni file nell'elenco degli argomenti::argdo %s/search/replace/g
Ecco alcuni suggerimenti per la ricerca (basato su alcuni dei commenti):
- Utilizzare un limite di parole se si desidera cercare "foo" ma non "foo_bar". Utilizzare i costrutti
\<e \>attorno al modello di ricerca in questo modo::argdo %s/\<search\>/foobar/g
- Usa un
/cflag di ricerca se vuoi che Vim chieda conferma prima di sostituire un termine di ricerca.
- Utilizzare un
/eflag di ricerca se si desidera saltare gli errori "modello non trovato".
- È inoltre possibile scegliere di salvare il file dopo aver eseguito la ricerca:
:argdo %s/search/replace/g | update. Qui, :updateviene utilizzato perché salverà il file solo se è stato modificato.
Buffer aperti
Se hai già buffer aperti e vuoi fare la ricerca / sostituzione, puoi usare :bufdo, che esegue un comando per ogni file nell'elenco dei buffer (:ls ).
Il comando è molto simile a :argdo: :bufdo %s/search/replace/g
Simile a :argdoe :bufdo, esiste :windoe :tabdoagisce rispettivamente su finestre e schede. Sono meno usati ma ancora utili da sapere.
/cbandiera per confermare le sostituzioni.