Il y a plusieurs moyens de le faire.
Dans le répertoire actuel
Si vous souhaitez effectuer la recherche / remplacement dans une arborescence de projet, vous pouvez utiliser la liste d'arguments de Vim .
Ouvrez simplement Vim puis utilisez la :args
commande pour remplir la liste des arguments. Vous pouvez transmettre plusieurs noms de fichiers ou même des globs.
Par exemple, :args **/*.rb
cherchera de manière récursive dans le répertoire actuel les fichiers ruby. Notez que c'est aussi comme ouvrir Vim avec vim **/*.rb
. Vous pouvez même utiliser la find
commande du shell pour obtenir une liste de tous les fichiers du répertoire actuel en exécutant:
:args `find . -type f`
Vous pouvez afficher la liste des arguments en cours :args
en s'exécutant tout seul. Si vous souhaitez ajouter ou supprimer des fichiers de la liste, vous pouvez utiliser :argadd
les :argdelete
commandes ou respectivement.
Une fois que vous êtes satisfait de la liste, vous pouvez maintenant utiliser la puissante :argdo
commande de Vim qui exécute une commande pour chaque fichier de la liste d'arguments::argdo %s/search/replace/g
Voici quelques astuces de recherche (basées sur certains commentaires):
- Utilisez une limite de mot si vous voulez rechercher "foo" mais pas "foo_bar". Utilisez les constructions
\<
et \>
autour du motif de recherche comme suit::argdo %s/\<search\>/foobar/g
- Utilisez un
/c
indicateur de recherche si vous souhaitez que Vim demande une confirmation avant de remplacer un terme de recherche.
- Utilisez un
/e
indicateur de recherche si vous souhaitez ignorer les erreurs "modèle non trouvé".
- Vous pouvez également choisir d'enregistrer le fichier après avoir effectué la recherche:
:argdo %s/search/replace/g | update
. Ici, :update
est utilisé car il ne sauvegardera le fichier que s’il a changé.
Tampons ouverts
Si vous avez déjà des tampons ouverts sur :bufdo
lesquels vous souhaitez effectuer la recherche / remplacement, vous pouvez utiliser une commande pour exécuter une commande pour chaque fichier de votre liste de tampons ( :ls
).
La commande est très similaire à :argdo
: :bufdo %s/search/replace/g
Semblable à :argdo
et :bufdo
, il existe :windo
et :tabdo
agit sur les fenêtres et les onglets respectivement. Ils sont moins souvent utilisés mais restent utiles à connaître.
/c
drapeau pour confirmer les substitutions.