Posso repetir uma macro com o .
comando? Por exemplo, eu gostaria de poder digitar:
@q...
e faça com que ele efetivamente ligue @q
4 vezes. Com o comportamento padrão, isso funciona somente se 'q' contém um único comando, por exemplo dw
, x
ou iHello<esc>
. (Isso faz sentido, pois '.' Repete a última alteração , não as últimas teclas / comandos)
Eu também adoraria ter esse trabalho com contagens. Por exemplo, digitando:
3@q.
seria efetivamente o mesmo que correr @q
6 vezes. Como posso configurar esse comportamento?
Enter
@@
repete a última macro; portanto, se você estiver perguntando isso por causa de mapeamentos e coisas do tipo, deve funcionar para você.Respostas:
Faça uma tentativa. Ele remapeia
@
para queg@
(mais um movimento simuladol
) seja usado posteriormente, tornando-se o último operador e sujeito a repetição.
.Eu tentei lidar com o maior número de casos de esquina que consigo imaginar. Você pode repetir
@:
com.
. Conta@
ou.
é retido para prensas subsequentes de.
.Isso é complicado, e não estou convencido de que algo não vai quebrar em algum lugar ao longo do caminho. Portanto, não há garantias, garantias ou promessas com este.
Pessoalmente, estou bem em ter uma diferença entre as repetições refinadas de
.
para a última alteração e as repetições macro de@@
.EDITAR
Achei que, tendo ido tão longe, também poderia adicionar algum código adicional que permitirá pressionar
.
imediatamente após a gravação de uma macro para reproduzi-la.fonte
.vimrc
).
imediatamente após a gravação.\<plug>qstop
deveria estarq
na função QStart antes #Para repetir sua última macro, você pode usá-
@@
lo3@@
, essencialmente rodaria @ q 3 vezes. No entanto, as teclas @ podem ser difíceis de manejar, então no meu .vimrc eu tenho as linhas:Isso permite que eu use minha chave de líder (,) mais m para executar a última macro. Em seguida, você pode preceder isso com um número para repetir a macro.
Agora
3,m
é equivalente a3@@
. Mesmas chaves totais e não há necessidade de pressionar Shift.EDIT : Ao repensar isso, eu vim com uma nova macro.
nmap <leader>. @@
Isso também funciona quando precedido por um número.3,.
Agora,3@@
gostaria de ver esse trabalho para que eu pudesse passar uma letra de macro e repeti-la em vez da última macro.fonte
3@q.
executar@q
6 vezes. Isso não faz isso.3@q.
? Parece que você também pode anexá-lo com uma contagem. Costumo definir uma pesquisa antes de iniciar uma macro e depois usán
-la para ir para o início de onde ela pode ser reproduzida.Você pode gravar o uso de uma macro em outra macro e repetir isso.
Agora
3@r
é como correr@q
seis vezes.fonte
Por padrão,
space
no vim é "mover para a direita 1 caractere", que já está cobertol
, portanto, remapeei o espaço para executar novamente uma macro do buffer q:Para usar, basta gravar uma macro
qq
primeiro, interromper a gravaçãoq
e pressionarspace
para reproduzir.fonte
Como não uso
,
e como uma solução simples e fácil de digitar, isso funciona para mim:fonte