Les Allergies
Alimentaires
Posez votre question Signaler

[Vim] Remplacer une occurence ? [Résolu]

duddy67 - Dernière réponse le 7 août 2009 à 07:58
Bonjour,
Je connais la commande de base dans Vim pour remplacer une occurence par une autre:
:%s/old/new/g
mais comment faire pour que celà s'applique à tous les fichiers ouvert ?
Est ce possible ?
Merci
Lire la suite 

[Vim] Remplacer une occurence »

5 réponses
Réponse
+8
moins plus
Personne ne réponds à celui qui pose la question qui était de savoir comment effectuer une substitution (et donc n'importe quelle opération/commande) sur la totalité des fichiers ouverts donc des buffers en cours, car même si les réponses peuvent dans certains cas résoudre le problème posé, on peut aussi vouloir effectuer d'autres opérations et ne pas se servir de vim que pour faire une substitution globale sur un ensemble de fichiers.

La réponse est de rajouter bufdo avant la substitution :
:bufdo %s/old/new/g


par contre, vu que par défaut on ne peut pas faire un changement et passer au buffer suivant sans que vim demande si l'on veut sauvegarder le buffer actuel, on peut juste avant cette commande demander d'inhiber cette fonctionnalité par :

:set hidden


ces 2 "astuces" et plein d'autres sont compilées dans l'excellent "Best of Vim Tips : http://rayninfo.co.uk/vimtips.html"
jipicy- 7 août 2009 à 07:58
Merci ;-)
Ajouter un commentaire
Réponse
+4
moins plus
j'ai pas l'impression que ca marche tres bien.
une alternative qui marche bien ;

for i in `ls *.ext` ; do vim -c '%s/toto/tata/g' -c 'wq' $i ; done
Ajouter un commentaire
Réponse
+2
moins plus
trouvé sur la page :
http://www.ird.fr/us191/spip.php?article4

Remplacer dans plusieurs fichiers une occurrence par une autre :
vim -c '%s/toto/tata/g' -c 'wq!' *.ext
Ajouter un commentaire
Réponse
+1
moins plus
Non je ne pense pas, la commande s'applique juste au buffer ouvert. En particulier si tu "splites" vim (:sp, :vs...) seul le buffer courant sera affecté. Si tu dois modifier un pattern dans plusieurs fichiers il vaudrait mieux passer par un sed s'appliquant à l'ensemble de ces fichiers.

Bonne chance
Ajouter un commentaire
Ce document intitulé « [Vim] Remplacer une occurence ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?