Caso de Uso
Estou no modo normal. Não pensei explicitamente em gravar uma macro, mas faço uma única alteração de comando. Agora posso repetir esta ação usando dot.
Agora percebo que é uma ação útil salvar em uma macro para usar mais tarde, em vez de digitar todo o comando todas as vezes. Posso atender a todas as alterações que precisam desse comando agora usando ponto, ou posso continuar editando e usar esse comando posteriormente, salvando-o em uma macro.
O último é o que eu quero fazer, mas a maneira mais fácil de pensar em fazê-lo não é fácil - desfaça minha alteração, comece a gravar uma macro e digite novamente o comando para fazer as alterações necessárias e pare de gravar a macro.
O que eu tentei até agora:
A gravação de pontos em uma macro não funciona porque registra o ponto e não a alteração que o ponto executa. (Por exemplo, digamos que o comando armazenado no ponto era d5w
Se você começar a gravar uma macro e executar a ação via. Esperando que ele exclua 5 palavras toda vez que você executar a macro, isso não acontecerá. Da próxima vez que você executar a macro fará ponto e não o comando.Isso d5w
significa que se você fez alguma outra alteração após gravar a macro - diga excluir 3 palavras usando d3w
e foi a última alteração realizada, quando você executar a macro, excluirá 3 palavras e não 5, porque está apenas rodando .
)
fonte
Respostas:
O Vim não mantém um histórico dos seus comandos no modo normal. Se você deseja manter um histórico do seu modo normal, use o seguinte para salvá-lo em um arquivo: https://vi.stackexchange.com/a/587/13848
Os comandos do modo normal são geralmente curtos, então as pessoas digitam no modo normal e não tentam criar macros. No entanto, se você quiser criar macros fora dos comandos do modo normal, poderá convertê-lo em um
Ex
comando de modo e salvá-lo em uma macro como apontado pelo @wmmso. Você pode fazer isso usando onorm
comando Portanto, se você deseja excluir 2 palavras, começando na posição atual do cursor, e use um comando de modo normal noEx
modo de uso:norm d2w
. (Ref: http://vimdoc.sourceforge.net/htmldoc/various.html#:norm , Executar comando normal acima do intervalo )É melhor usar um
Ex
comando mode se for um comando complicado, pois permite digitar o comando completo em um buffer, verifique se ele está realmente correto e também o salve no histórico da linha de comando.Agora que você possui o comando do modo normal no modo ex, também pode navegar pelo comando como histórico usando
q:
e copiá-lo em um registro usando"ay$
, enquanto estiver na linha que contém a linha de comando que deseja salvar em uma macro. Então, quando você quiser executar a macro, poderá executá-la usando@a
fonte
d2w
?copie o conteúdo do registro ":" (o que você acabou de fazer) em outro registro, por exemplo, registre um:
você pode executá-lo novamente usando
fonte
:
contém o último comando executado via:command-name-goes-here
em vez de um comando do modo normal, comod2w