Remarque: Je suppose que vous utilisez le aregistre 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 displayréglage).
Ce n'est pas une cartographie; il est donc logique que :mapcela 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 :registerspour 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 asdet 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 :splitou :tabnewet 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 atrouve 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 aregistre:
- ^ 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é.