Rechercher : dans
Par :

[Vim] Remplacer une occurence ?

Dernière réponse le 7 aoû 2009 à 07:58:06 duddy67, le 24 oct 2007 à 19:09:47 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [Vim] Remplacer une occurence ? » dans :
Linux - L'éditeur Vi Voir Introduction à Vi Vi est un des éditeurs de texte les plus populaires sous Linux (avec Emacs et pico) malgré son ergonomie très limitée. En effet, Vi (prononcez Vihaille) est un éditeur entièrement en mode texte, ce qui signifie que chacune des...
[vi/vim] Rechercher un mot VoirAfin de rechercher un mot sous Vi/Vim, il suffit de taper "/" ou "?", suivi du mot à rechercher afin de lancer la recherche respectivement vers le bas ou vers le haut. Une pression sur la touche "n" permet d'aller directement à l'occurence...
Sed - Substitution VoirSubstitution Substitution basique Simple Globale Ciblée Substitution conditionnée Simplee Avancée Bloc Avancéé Substitution basique Simple - 1ère occurrence (de chaque ligne) rencontrée uniquement sed 's/la/LA/' fichier.txt
Petit tuto sur VI/VIM VoirExtraits du tutoriel de VIM =============================================================================== B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.5.fr.2...
Linux - L'éditeur Vi VoirIntroduction à Vi Vi est un des éditeurs de texte les plus populaires sous les systèmes de type Unix (avec Emacs et pico) malgré son ergonomie très limitée. Sous Linux il existe une version libre de Vi appelée Vim (Vi Improved). Vi (prononcez...
Manipulation de données - Recherche et remplacement VoirRecherche et remplacement Les algorithmes de remplacement permettent de remplacer tous les éléments d’un conteneur vérifiant une propriété particulière par un autre élément dont la valeur doit être fournie en argument. Les éléments devant être...

1

mamiemando, le 24 oct 2007 à 21:38:46
  • +1

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

Répondre à mamiemando

2

rico, le 5 jun 2008 à 12:04:49

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

Répondre à rico

3

rico, le 5 jun 2008 à 12:36:50
  • +1

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

Répondre à rico

4

adren67, le 7 aoû 2009 à 03:00:05
  • +2

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"

Répondre à adren67

5

 jipicy, le 7 aoû 2009 à 07:58:06

Merci ;-)
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy
Collection CommentÇaMarche.net