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 :args
comando para preencher a lista de argumentos. Você pode passar vários nomes de arquivos ou até globs.
Por exemplo, :args **/*.rb
procurará 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 find
comando 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 :args
por si só. Se você deseja adicionar ou excluir arquivos da lista, pode usar :argadd
os :argdelete
comandos ou, respectivamente.
Quando estiver satisfeito com a lista, agora você poderá usar o poderoso :argdo
comando 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
/c
sinalizador de pesquisa se desejar que o Vim peça confirmação antes de substituir um termo de pesquisa.
- Use um
/e
sinalizador 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 :argdo
e :bufdo
, há :windo
e :tabdo
que atuam em janelas e abas, respectivamente. Eles são usados com menos frequência, mas ainda são úteis para saber.
/c
bandeira para confirmar substituições.