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 :argscommande pour remplir la liste des arguments. Vous pouvez transmettre plusieurs noms de fichiers ou même des globs.
Par exemple, :args **/*.rbcherchera 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 findcommande 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 :argsen s'exécutant tout seul. Si vous souhaitez ajouter ou supprimer des fichiers de la liste, vous pouvez utiliser :argaddles :argdeletecommandes ou respectivement.
Une fois que vous êtes satisfait de la liste, vous pouvez maintenant utiliser la puissante :argdocommande 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
/cindicateur de recherche si vous souhaitez que Vim demande une confirmation avant de remplacer un terme de recherche.
- Utilisez un
/eindicateur 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, :updateest utilisé car il ne sauvegardera le fichier que s’il a changé.
Tampons ouverts
Si vous avez déjà des tampons ouverts sur :bufdolesquels 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 à :argdoet :bufdo, il existe :windoet :tabdoagit sur les fenêtres et les onglets respectivement. Ils sont moins souvent utilisés mais restent utiles à connaître.
/cdrapeau pour confirmer les substitutions.