Remarque: Je suppose que vous utilisez le a
registre pour l'intégralité de cette réponse, mais vous pouvez utiliser n'importe quel registre.
Note2: <1b>
est Esc; vous pouvez insérer ceci avec Ctrl+vet ensuite Esc. Il peut également apparaître comme ^[
(selon le display
réglage).
Ce n'est pas une cartographie; il est donc logique que :map
cela ne fonctionne pas. Il est enregistré dans un registre et vous pouvez le voir et le modifier comme n'importe quel registre.
Tout ce que cela qfait est "effacer ce registre et y ajouter une frappe" , et tout @simplement "évaluer un registre en tant que commande" .
Il n'y a rien de "différent" dans une macro, vous pouvez invoquer n'importe quel registre en tant que macro.
Pour voir, utilisez simplement:
:echo @a
Tout comme n'importe quel registre.
Vous pouvez également utiliser :registers
pour afficher tous les registres.
Pour éditer, vous pouvez faire plusieurs choses:
La façon la plus simple d’affecter est la suivante @a
:
:let @a='iasd<1b>'
Cela lancera le mode insertion ( i
), l'insertion asd
et le retour au mode normal.
Ce n'est pas très utile pour l'édition approfondie; vous pouvez utiliser des fonctions (ie. substitute()
), ou peut-être ajouter quelque chose ( :let @a=@a . 'more'
), mais changer quelque chose au milieu n'est pas si facile.
J'ai trouvé que le meilleur moyen pour cela est de commencer un nouveau tampon avec :split
ou :tabnew
et d'éditer le registre en l'insérant ici, en l'éditant puis en le recopiant.
Vous pouvez utiliser "apqui insérera le texte dans le tampon (où se a
trouve votre registre):
iThis is A<1b>
Maintenant je peux juste changer la ligne en peut-être:
iThis is an edited macro<1b>
Ensuite, je ^v$"aytire (copie) cette ligne dans le a
registre:
- ^ pour début de ligne
- v pour le mode visuel
- $ pour fin de ligne
- "ay tirez la sélection pour vous inscrire
a
Si vous le souhaitez, vous pouvez le faire sans utiliser le mode visuel avec ^"ay$.
Vous pouvez maintenant utiliser @a, comme si c’était ce que vous aviez enregistré à l’origine.
Vous pouvez également simplement utiliser yy, et ensuite @", ce qui est un peu plus rapide. Cela va également copier la fin de ligne, cependant, et peut causer des effets secondaires ... Une autre façon de rendre cela plus rapide consiste à utiliser une macro :-)
Enter
à la fin de votre enregistrement. Dans de nombreux cas, cela peut être bénin, mais dans les scénarios où vous avez soigneusement défini la position du curseur à la fin de l'enregistrement, cela peut affecter la répétabilité.