Chercher et remplacer dans une arborescence avec Vim

- Unix

vim est un éditeur génial, plus je l’utilise et plus j’ai l’impression que l’on peut tout faire avec lui. Dernièrmenent, j’ai du remplacer du texte dans une arborescence assez complexe et n’étant pas assez à l’aise avec sed, j’ai cherché une alternative. Et je suis tombé sur un petit article qui propose de faire cela en deux commandes avec Vim…

La méthode est relativement simple, il faut charger tous les éléments que l’on veut rechercher avec un pattern qui peut contenir plusieurs wildcards. Une fois les documents chargés dans Vim, il suffit ensuite d’utiliser la fonction “search and replace” de Vim. Dit comme cela, ça a l’air très simple et en pratique ça l’est aussi.

Cas pratique

Imaginons, que je veuille migrer un site de HTTP en HTTPS, il faut que je remplace tout mes liens commençant par “http://” par “https://“. Nous allons donc charger tous les fichiers html présent dans le répertoire courant et tous les répertoires fils. On ouvre donc une fenetre vim vide et on va saisir la commande suivante :

:args ./*.html

Il ne reste maintenant plus qu’a rechercher dans les fichiers chargés et de remplacer le contenu avec notre nouvelle string. On fait cela avec la classique commande s%// que l’on va appliquer à tous les fichiers chargés avec la commande argdo :

:argdo %s/http:\/\//https:\/\//ge

Et voila, c’est tout. Bon si vous n’avez pas confiance, vous pouvez toujours ajouter l

Tout d’abord il faut charger les fichiers dans Vim, il faut donc ouvrir un édieur vide puis

Source : Ibrahim Ahmed

Partager sur Twitter