Existem várias maneiras de fazer isso.
Diretório atual interno
Se você deseja executar a pesquisa / substituição em uma árvore de projeto, pode usar a lista de argumentos do Vim .
Simplesmente abra o Vim e use o :argscomando para preencher a lista de argumentos. Você pode passar vários nomes de arquivos ou até globs.
Por exemplo, :args **/*.rbprocurará recursivamente no diretório atual por arquivos ruby. Observe que isso também é como abrir o Vim com vim **/*.rb. Você pode até usar o findcomando do shell para obter uma lista de todos os arquivos no diretório atual executando:
:args `find . -type f`
Você pode visualizar a lista de argumentos atual executando :argspor si só. Se você deseja adicionar ou excluir arquivos da lista, pode usar :argaddos :argdeletecomandos ou, respectivamente.
Quando estiver satisfeito com a lista, agora você poderá usar o poderoso :argdocomando do Vim, que executa um comando para todos os arquivos da lista de argumentos::argdo %s/search/replace/g
Aqui estão algumas dicas para pesquisar (com base em alguns dos comentários):
- Use um limite de palavras se quiser pesquisar "foo", mas não "foo_bar". Use as construções
\<e \>ao redor do padrão de pesquisa da seguinte maneira::argdo %s/\<search\>/foobar/g
- Use um
/csinalizador de pesquisa se desejar que o Vim peça confirmação antes de substituir um termo de pesquisa.
- Use um
/esinalizador de pesquisa se desejar ignorar os erros "padrão não encontrado".
- Você também pode optar por salvar o arquivo depois de executar a pesquisa:
:argdo %s/search/replace/g | update. Aqui, :updateé usado porque ele só salvará o arquivo se ele tiver sido alterado.
Buffers abertos
Se você já possui buffers abertos, deseja fazer a pesquisa / substituição, pode usar :bufdo, o que executa um comando para cada arquivo em sua lista de buffers ( :ls).
O comando é muito semelhante a :argdo: :bufdo %s/search/replace/g
Similar ao :argdoe :bufdo, há :windoe :tabdoque atuam em janelas e abas, respectivamente. Eles são usados com menos frequência, mas ainda são úteis para saber.
/cbandeira para confirmar substituições.