Recherche…


Enregistrer une macro

Une façon de créer une macro est de l’ enregistrer .

Commencez à enregistrer une macro et enregistrez-la dans un registre (dans cet exemple, nous utiliserons a , mais il peut s'agir de n'importe quel registre sur lequel vous pouvez normalement taper du texte):

qa

Ensuite, exécutez les commandes que vous souhaitez enregistrer dans la macro (ici, nous allons entourer le contenu d'une ligne avec des balises <li> ):

I<li><ESC>A</li>

Lorsque nous en avons fini avec les commandes que nous voulons enregistrer dans la macro, arrêtez l'enregistrement:

q

Maintenant, chaque fois que nous voulons exécuter la séquence enregistrée de commandes stockées dans a , utilisez:

@a

et vim répétera la séquence enregistrée.

La prochaine fois que vous souhaitez répéter la dernière macro utilisée, vous pouvez taper deux fois @ :

@@

Et comme bonus supplémentaire, il est bon de se rappeler que si vous mettez un nombre avant une commande, il le répétera plusieurs fois. Donc, vous répétez la macro enregistrée dans le registre a 20 fois avec:

20@a

Modification d'une macro vim

Parfois, vous commettez une erreur avec une longue macro, mais vous préférez la modifier plutôt que de la réenregistrer entièrement. Vous pouvez le faire en utilisant le processus suivant:

  1. Placez la macro sur une ligne vide avec "<register>p .

    Si votre macro est enregistrée dans le registre a , la commande est "ap .

  2. Modifiez la macro selon vos besoins.

  3. Yank la macro dans le registre correct en déplaçant le curseur au début de la ligne et en utilisant "<register>y$ .

    Vous pouvez réutiliser le registre d'origine ou en utiliser un autre. Si vous voulez utiliser le registre b , la commande est "by$ . Ou en utilisant "<register>d$ (supprime la ligne inutilisée)

Macros récursives

Les macros Vim peuvent également être récursives. Ceci est utile lorsque vous devez agir sur chaque ligne (ou autre objet texte) jusqu'à la fin du fichier.

Pour enregistrer une macro récursive, commencez par un registre vide. (Un registre peut être vidé en utilisant q<register>q .)

Choisissez un point de départ cohérent sur chaque ligne pour commencer et terminer.

Avant de terminer l'enregistrement, appelez la macro comme dernière commande. (C'est pourquoi le registre doit être vide: il ne fera rien car la macro n'existe pas encore).

Exemple, donné le texte:

line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???

En mode normal, avec le curseur sur la première ligne et un registre vide a , on pourrait enregistrer cette macro:

qaI"<Esc>A"<Esc>j@aq

Ensuite, avec une seule invocation de @a , toutes les lignes du fichier seront désormais entre guillemets.

Qu'est-ce qu'une macro?

Une macro est une série de touches destinées à être "relues" par Vim sans délai. Les macros peuvent être stockées dans des registres ou des variables, liées à des clés ou exécutées sur la ligne de commande.

Voici une macro simple qui majuscule le troisième word sur une ligne:

0wwgUiw

Cette macro pourrait être enregistrée dans le registre q :

qq         start recording into register q
0wwgUiw    
q          stop recording

ou enregistré directement dans le registre q :

:let @q = '0wwgUiw'

à lire avec:

@q

Mais il pourrait également être saisi directement dans la ligne de commande:

:normal 0wwgUiw

pour une lecture instantanée via la commande :normal .

Ou mettre dans une variable:

:let myvar = '0wwgUiw'

à lire avec:

@=myvar

Ou enregistré en tant que mappage:

nnoremap <key> 0wwgUiw

à lire en appuyant sur <key> .

Si vous souhaitez stocker une macro pour une réutilisation ultérieure, vous pouvez taper en mode insertion:

<C-r>q

Cela insère la macro dans le registre q (dans cet exemple: 0wwgUiw ). Vous pouvez utiliser cette sortie par exemple pour définir la macro dans votre vimrc :

let @q='0wwgUiw'

En procédant ainsi, le registre q est initialisé avec cette macro chaque fois que vous démarrez vim.

Action d'enregistrement et de relecture (macros)

avec la commande q nous pourrions simplifier beaucoup de travail fastidieux en vim.

exemple 1. générer une séquence de tableaux (1 à 20).

ÉTAPE 1. Appuyez sur i pour accéder au mode d'insertion, entrez 1

1

ÉTAPE 2. Enregistrez l' action suivante: "ajoutez le dernier numéro à la ligne suivante et augmentez le nombre"

  1. tapez esc pour quitter le mode de saisie
  2. tapez qa pour entrer en mode enregistrement, en utilisant a tampon a
  3. tapez yy et p pour copier la ligne courante et la coller comme ligne suivante
  4. tapez ctrl + a pour augmenter le nombre
  5. tapez q nouveau pour terminer l'enregistrement
1
2

ÉTAPE 3. Relisez l' action 18 fois.

tapez 18@a pour relire l'action 3 et l'action 4 à l'étape 2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow