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 :args
comando per popolare l'elenco degli argomenti. Puoi passare più nomi di file o persino globs.
Ad esempio, :args **/*.rb
cercherà ricorsivamente nella directory corrente i file ruby. Nota che è anche come aprire Vim con vim **/*.rb
. Puoi anche usare il find
comando 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 :args
da solo. Se si desidera aggiungere o eliminare file dall'elenco, è possibile utilizzare :argadd
o: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
/c
flag di ricerca se vuoi che Vim chieda conferma prima di sostituire un termine di ricerca.
- Utilizzare un
/e
flag 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, :update
viene 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 :argdo
e :bufdo
, esiste :windo
e :tabdo
agisce rispettivamente su finestre e schede. Sono meno usati ma ancora utili da sapere.
/c
bandiera per confermare le sostituzioni.