Puis-je répéter une macro avec la .
commande? Par exemple, j'aimerais pouvoir taper:
@q...
et le faire appeler efficacement @q
4 fois. Avec le comportement par défaut, cela ne fonctionne que si « q » est titulaire d' une seule commande, par exemple dw
, x
ou iHello<esc>
. (Cela a du sens cependant, car '.' Répète le dernier changement , pas les dernières frappes / commandes)
J'aimerais aussi avoir ce travail avec des comptes. Par exemple, en tapant:
3@q.
serait effectivement la même chose que de courir @q
6 fois. Comment puis-je configurer ce comportement?
Enter
@@
répète la dernière macro, donc si vous demandez ceci pour des mappages et autres, cela devrait fonctionner pour vous.Réponses:
Essayez ceci. Il remappe
@
pour queg@
(plus un mouvement facticel
) soit utilisé par la suite, devenant ainsi le dernier opérateur et sujet à la répétition avec.
.J'ai essayé de gérer autant de cas d'angle que je peux penser. Vous pouvez répéter
@:
avec.
. Compte@
ou.
est conservé pour les presses suivantes de.
.C'est délicat et je ne suis pas convaincu que quelque chose ne se cassera pas quelque part en cours de route. Donc, aucune garantie, garantie ou promesse avec celui-ci.
Personnellement, je vais bien avoir une différence entre les répétitions à grain fin de
.
pour le dernier changement et les répétitions macro de@@
.ÉDITER
J'ai pensé, étant allé aussi loin, que je pourrais aussi bien ajouter du code supplémentaire qui permettra d'appuyer
.
immédiatement après l'enregistrement d'une macro pour la lire.la source
.vimrc
).
immédiatement après l'enregistrement.\<plug>qstop
devrait être avantq
dans la fonction QStartPour répéter votre dernière macro, vous pouvez
@@
donc3@@
exécuter essentiellement @q 3 fois. Cependant, les frappes @ peuvent être lourdes, donc dans mon .vimrc j'ai les lignes:Cela me permet d'utiliser ma clé de repère (,) plus m pour exécuter la dernière macro. Ensuite, vous pouvez faire précéder cela d'un nombre pour répéter la macro.
3,m
Est maintenant équivalent à3@@
. Mêmes touches totales et pas besoin de maintenir la touche Maj enfoncée.EDIT : En repensant cela, j'ai trouvé une nouvelle macro.
nmap <leader>. @@
Cela fonctionne également lorsqu'il est précédé d'un nombre, il en3,.
est de même maintenant3@@
.la source
3@q.
fonctionner@q
6 fois. Cela ne fait pas ça.3@q.
? Il semblerait que vous pourriez aussi bien l'ajouter avec un décompte. J'ai tendance à définir une recherche avant de commencer une macro, puis à l'utilisern
dans la macro pour sauter au début de l'endroit où elle peut être rejouée.Vous pouvez enregistrer l'utilisation d'une macro dans une autre macro et répéter cela.
Maintenant,
3@r
c'est comme courir@q
six fois.la source
Par défaut
space
dans vim est "déplacer vers la droite 1 caractère" qui est déjà couvert parl
, j'ai donc remappé l'espace pour réexécuter une macro à partir du tampon q:Pour l'utiliser, enregistrez simplement une macro avec d'
qq
abord, arrêtez l'enregistrement avecq
puis appuyez surspace
pour relire.la source
Comme je n'utilise pas
,
et que j'aime une solution simple et facile à taper, cela fonctionne pour moi:la source