Vim et les macros

Le 01/03/2012

Dans Développement

Aujourd’hui, découvrez comment fonctionnent les macros sous vim. Vous pourrez ainsi vous attaquer aux taches très répétitives avec plus de sérénité.

Une des choses que je déteste, c’est de me répéter ! Faire la même action 10 fois, 20 fois, … C’est quelque chose qui m’insupporte au plus haut point. Heureusement, Vim fournit un des meilleurs moyens contre les répétitions: les macros.

Qu’est ce qu’une macro ?

Une macro est une suite d’actions enregistrées pour pouvoir être réutilisées. Cela permet de faire une action une seule fois, puis de la répéter x fois, en une seule commande. Le peu de temps perdu à faire la macro est généralement très vite rentabilisé.

Faire une macro sous vim

Sous Vim, c’est enfantin :

Il suffit d’appuyer sur q<lettre>, ou « lettre » sera le nom de la macro. Notez le message ‘enregistrement’ en bas à gauche. Nous pouvons ensuite faire les actions que l’on souhaite enregistrer et finir en appuyant sur q, pour que l’enregistrement s’arrête et que la macro soit sauvée.

Notre action est donc enregistrée, et pourra être rappelée avec @<lettre>. Pour la répéter plusieurs fois ? Il suffit d’entrer un chiffre avant le @. 20@a répétera donc la macro « a » 20 fois.

Tout comme avec le copier coller, il est possible d’éditer les macros en mettant la lettre correspondante en majuscule. qA<actions>q ajoutera les actions au buffer a.

Ces macros sont persistantes, même si vous quittez Vim, elles restent disponibles.

Voilà pour la théorie. Pour la pratique, c’est un peu plus complexe si vous ne savez pas comment vous déplacer correctement dans Vim : en effet, si le but de la macro est d’encadrer un mot avec des «  », aller à la fin du mot avec les flèches n’est pas recommandé. Sauf si tous les mots que l’on doit encadrer font la même taille.

La solution, utiliser b et e pour aller au début et à la fin du mot, peut importe sa taille. Ceci est évidemment un exemple, je vous mets ici une cheatsheet pour les déplacements sous Vim.

Cheatsheet Vim par nwilde

Source : Vim Cheat Sheet by nwilde

Pour plus d’informations sur le sujet, je conseille la doc de Vim :  https://vim.fandom.com/wiki/Macros