Cas d'utilisation
Je suis en mode normal. Je n'ai pas explicitement pensé à enregistrer une macro, mais j'effectue une seule modification de commande. Je peux maintenant répéter cette action en utilisant le point.
Je me rends compte maintenant que c'est une action utile pour enregistrer dans une macro à utiliser plus tard plutôt que de taper la commande entière à chaque fois. Je peux soit assister à toutes les modifications nécessitant cette commande en ce moment en utilisant le point, soit continuer avec l'édition et utiliser cette commande plus tard en l'enregistrant dans une macro.
C'est ce que je veux faire, mais la façon la plus simple d'y penser n'est pas facile - annuler ma modification, commencer à enregistrer une macro et retaper la commande pour effectuer la modification requise et arrêter l'enregistrement de la macro.
Ce que j'ai essayé jusqu'à présent:
L'enregistrement d'un point dans une macro ne fonctionne pas car il enregistre le point et non le changement effectué par le point. (Par exemple, supposons que la commande stockée dans le point était d5w
Si vous commencez à enregistrer une macro et effectuez l'action via. En attendant qu'elle supprime 5 mots à chaque fois que vous exécutez la macro, cela ne se produira pas. La prochaine fois que vous exécuterez la macro fera des points et non la commande d5w
. Cela signifie que si vous avez fait un autre changement après avoir enregistré la macro - dites supprimer 3 mots en utilisant d3w
et c'était la dernière modification que vous avez effectuée, puis quand vous exécutez la macro elle supprimera 3 mots et non 5, parce que ça ne fait que courir .
)
la source
Réponses:
Vim ne conserve pas d'historique de vos commandes en mode normal. Si vous souhaitez conserver un historique de votre historique de mode normal, vous pouvez utiliser ce qui suit pour l'enregistrer dans un fichier: https://vi.stackexchange.com/a/587/13848
Les commandes en mode normal sont généralement courtes, donc les gens le tapent simplement en mode normal et n'essaient pas de créer des macros. Cependant, si vous souhaitez créer des macros à partir de commandes en mode normal, vous pouvez les convertir en
Ex
commande de mode, puis l'enregistrer dans une macro comme l'a souligné @wmmso. Vous pouvez le faire en utilisant lanorm
commande. Donc, si vous souhaitez supprimer 2 mots à partir de la position actuelle du curseur et utiliser une commande de mode normal enEx
mode utilisation:norm d2w
. (Réf: http://vimdoc.sourceforge.net/htmldoc/various.html#:norm , exécute une commande normale sur la plage )Il vaut mieux utiliser une
Ex
commande de mode si c'est une commande compliquée, car elle vous permet de taper la commande complète dans un tampon, assurez-vous qu'elle est réellement correcte et l'enregistre également dans l'historique de la ligne de commande.Maintenant que vous avez votre commande en mode normal en mode ex, vous pouvez également parcourir votre commande comme l'historique à l'aide
q:
, puis la copier dans un registre à l'aide"ay$
, tandis que sur la ligne contenant la ligne de commande que vous souhaitez enregistrer dans une macro. Ensuite, lorsque vous souhaitez exécuter la macro, vous pouvez l'exécuter à l'aide@a
la source
d2w
?copier le contenu du registre ":" (ce que vous venez de faire) dans un autre registre, par exemple, enregistrer un:
vous pouvez l'exécuter à nouveau en utilisant
la source
:
contient la dernière commande exécutée via:command-name-goes-here
au lieu d'une commande en mode normal telle qued2w