Chercher remplacer dans tous les buffers de vim

J'ai plusieurs fois eu besoin de faire des substitutions dans tous les fichiers ouverts dans vim. J'avais cherché dans les flags de la commande substitute (:s) sans succès et donc systématiquement je contournais le problème à coup de lignes de bash à base de find, sed, grep et compagnie. Mais je suis tombé par hasard sur la commande :bufdo en cherchant à corriger quelques petits bugs dans eZVim le plugin vim pour eZ Publish. Du coup rien de compliqué, il suffit de préfixer toute commande par bufdo pour l'appliquer sur tous les buffers ouverts, par exemple :

:bufdo! %s/cherche/remplace/g

Le point d'exclamation permet de forcer le passage d'un buffer à un autre sans sauvegarder son contenu. Et évidemment ça marche pour autre chose que la substitution. Il est également possible d'exécuter plusieurs commandes sur chacun des buffers en les séparant avec un pipe (|), par exemple pour corriger une indentation en fonction des réglages de vim, supprimer les espaces inutiles en fin de ligne et sauvegarder le fichier, la ligne suivante devrait faire l'affaire :

:bufdo retab | %s/  *$//g | w

Il existe également :tabdo (pour les onglets), :windo (pour les fenêtres vim) et :argdo (pour les arguments de la ligne de commande).

» Commentaires

- :set autowrite (#67938) par djib le 09 Septembre 2009 à 12:16
Avec :set autowrite, tu peux forcer l'écriture automatique des buffers. À utiliser avec précautions évidemment. Ça peut être une bonne idée de le faire en ajoutant le flag /c à la commande de remplacement : un message de confirmation viendra te demander pour chaque replacement si tu sais ce que tu fais.
- C'est beau (#67949) par Jérôme le 11 Septembre 2009 à 21:20
C'est quand même beau Vim.

:)

» Trackback

Aucun trackback

Les trackacks sont désactivés

Flux RSS des billets

Flux RSS des billets

Rechercher sur pwet.fr

À retenir

Derniers commentaires

Archives

Nuage de tags

Bioutifoul photos

Quelques liens

Licence d'utilisation

Contenu sous Licence Creative Commons By-Sa

Sauf mentions spécifiques, les billets et les photos publiés sur ce site sont placés sous la licence Creative Commons by-sa.

Pour toute utilisation dépassant le cadre de cette licence, merci de me contacter par e-mail.

Login