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é.v
et sélectionner la ligne entière (sans la nouvelle ligne).v^$"ay
pour tirer (copier) cette ligne dans lea
registre." Cela ne devrait-il pas^
précéder lav
, et avec$
vous ne copiez-vous toujours pas la nouvelle ligne? Je pense que ça devrait être:0v$h"ay
(oui péniblement long!)$
passe à la fin de la ligne, mais n'inclut pas la nouvelle ligne. C'est la différence entre0y$
etyy
. Mettreh
après$
signifie simplement que vous manqueriez le dernier caractère.Pour avoir quelque chose à travailler avec ...
Va commencer à enregistrer une macro dans le
a
registre.Vous pouvez voir beaucoup de vos registres actuels (utilisés pour les macros, yanking, supprimer, etc.) avec la
:reg
commande, ou vous pouvez spécifier un registre à afficher en fournissant son nom. Par exemple, pour afficher le registrea
:les rendements
Vous pouvez ajouter à un registre nommé existant en utilisant la lettre majuscule correspondante. Cela ne fonctionne pas uniquement pour l'enregistrement de macros, mais également pour le retrait. Par exemple:
les rendements
Si vous souhaitez utiliser la syntaxe let pour modifier une macro existante, vous pouvez procéder comme suit:
qui s'étendra à
et vous pouvez ensuite modifier les frappes individuelles.
Notez que vous pouvez utiliser le
<C-r>
(c'est-à-dire, contrôle + r) pour coller de n'importe quel registre en mode ligne de commande (ou en mode insertion, d'ailleurs).De plus, lorsque vous êtes en mode ligne de commande, si vous tapez
<C-f>
ceci, une fenêtre apparaîtra pour vous permettre de voir / modifier les commandes passées passées et de modifier votre commande en cours avant de l'appeler. Appuyez sur Entrée sur la commande que vous souhaitez soumettre.L'avantage de ceci est que vous pouvez utiliser vos commandes de mouvement / substitution normales à l'intérieur de ce tampon pour modifier votre macro. Par exemple:
fera apparaître:
Si vous êtes sur commande 120, vous pouvez faire:
les rendements
Vous pouvez bien sûr coller le contenu du registre dans votre tampon et le changer ici. Mais vous pouvez faire tout ce dont vous avez besoin sans contaminer votre tampon de travail.
la source