[Vim] Remplacer une occurence ?
Résolu
duddy67
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
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
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
A voir également:
- Vim rechercher
- Rechercher ou entrer l'adresse - Guide
- Rechercher image - Guide
- Rechercher remplacer word - Guide
- Rechercher une chanson - Guide
- Adresse IP locale : comment la trouver facilement - Guide
4 réponses
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 :
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 :
ces 2 "astuces" et plein d'autres sont compilées dans l'excellent "Best of Vim Tips : http://rayninfo.co.uk/vimtips.html"
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
Messages postés
40842
Date d'inscription
Statut
Modérateur
Dernière intervention
4 896
Merci ;-)
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
une alternative qui marche bien ;
for i in `ls *.ext` ; do vim -c '%s/toto/tata/g' -c 'wq' $i ; done
trouvé sur la page :
https://us191.ird.fr?article4
Remplacer dans plusieurs fichiers une occurrence par une autre :
vim -c '%s/toto/tata/g' -c 'wq!' *.ext
https://us191.ird.fr?article4
Remplacer dans plusieurs fichiers une occurrence par une autre :
vim -c '%s/toto/tata/g' -c 'wq!' *.ext
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
Bonne chance