Je veux exécuter une macro que je viens d'enregistrer dans le registre " x
" sur chaque ligne d'un tampon ouvert, de mon curseur à la fin du tampon, dans vim. Comment je fais ça?
Je sais que je peux rejouer la macro n fois:
15@x
... ou maintenez-la enfoncée @
jusqu'à ce que j'atteigne la dernière ligne, mais je veux juste appuyer sur quelques touches et en finir.
Merci d'avance.
Réponses:
Personnellement je ferais
Modifier: a changé le registre pour celui que vous avez spécifié.
la source
Vous pouvez faire (en mode commande)
la source
faire une macro récursive:
ex:
Il va UPCASE premier mot de la ligne actuelle à la fin du fichier avec un seul @a. Mais assurez-vous qu '"un registre est vide:
la source
%:normal
approche car elle honore tous les mouvements de ligne dans la macro, elle est donc utile lorsque les lignes ne sont pas de forme identique. Je trouve qu'il est plus facile de créer une macro «a» pour définir l'action, puis de demander à la macro «b» de faire le bit récursif, c'est-à-dire qb @ a @ bq.ctrl-c
d'arrêter si cela arrive!:set nowrapscan
fait échouer et s'arrête lorsqu'il atteint la fin du fichier.qaq
avant la macro:qaqqa0gUwj@aq
. De plus, si vous oubliez de mettre le@q
à la fin, vous pouvez toujoursqA
commencer à ajouter un registre, puis le faire@q
. J'enregistre généralement sur reg q pour une raison quelconque car c'est facile (en particulier pour les macros récursives) et finit généralement par faireqqqqqgUiwj@qq
au lieu de deux macros. Les trois premiersq
s clear reg q, les deux secondsq
démarrent l'enregistrement. Voir vim.wikia.com/wiki/Record_a_recursive_macroa
registre, on pourrait taper simplementqaq
999999@x
, sauf si vous avez un très gros buffer ...la source
%:normal @x
ou1,$:normal @x
?99999@x
c'est juste la chose naturelle que vous proposez lorsque vous êtes pressé :)De vim wiki, version abrégée: qqqqq pour enregistrer la macro @qq pour terminer l'enregistrement @q pour l'exécuter (et fonctionnera jusqu'à la fin du fichier)
la source