Enregistrement de commandes

Nous avions vu précédemment que la commande « . » permettait de répéter une commande.
Il se peut cependant que vous souhaitiez répéter une suite de plusieurs commandes, un peu comme une macro que vous auriez enregistré.
C’est tout à fait possible avec Vim puisque les commandes doivent être enregistrées dans un registre nommé par une lettre alphabétique.
Si vous tapez qa, l’enregistrement démarre sur le registre a et vous voyez la barre d’état se mettre à jour de la manière suivante :

Enregistrement d'une commande


Vous tapez ensuite toutes les commandes et saisies de texte que vous souhaitez appliquer.
Terminez enfin votre enregistrement en tapant simplement q en mode commande.

Supposons que vous souhaitiez faire précéder les noms des personnes par « M.  » et passer en majuscule toutes les lettres du nom.
Positionnez le curseur sur le nom de la première personne (Pierre), puis tapez les commandes suivantes :

qa Commence l’enregistrement du registre a
gUaw passe en majuscule (gU) le mot complet (« aw » pour « a word » souvenez-vous !)
i activation du mode insertion
M. ajout du texte « M. »
<Echap> retour au mode commande
j passage à la ligne suivante
q fin d’enregistrement de la commande

Maintenant nous pouvons appliquer la commande aux noms suivants.
Pour rappeler la commande du registre a, tapez @a.
Vous devrez ensuite taper @a pour chacun des noms à modifier.

A noter que la commande de répétition « . » ne fonctionne pas sur la commande @a.
En revanche, il est possible de taper @@ pour rappeler le registre utilisé dernièrement.
Vous pourrez faire précéder le rappel de commande par un quantifieur.
Dans notre exemple, nous pouvons donc faire 2@a pour les 2 noms restants.

Petit point d’information qui vous permettra de connaître les fins fonds de Vim.
Le registre dans lequel nous avons enregistré notre commande peut être collé, de la même manière qu’un copier-coller.
Si vous tapez maintenant « ap, vous verrez apparaître la commande suivante : gUawiM.^[j

Vous pouvez tout à fait enregistrer une commande dans un registre en tapant la liste des actions puis en se plaçant en début de commande et en tapant "ay$. Ceci copiera la sélection depuis le curseur jusqu’à la fin de la ligne ($) pour le stocker dans le registre a.

Si vous souhaitez compléter une commande dans un registre, tapez qA par exemple. Ceci permettra dans notre exemple d’ajouter des commandes à notre commande existante.

Laisser un commentaire