Gravei uma macro simples e a reproduzi nas linhas a seguir, mas parece que a velocidade de reprodução é muito lenta (lida com poucas linhas por segundo). Isso é esperado e existe uma maneira de melhorar essa velocidade?
Na verdade, lazyredrawé provavelmente a melhor solução. Você também pode fornecer sua macro e um arquivo de exemplo para que possamos ver se ele pode ser otimizado.
Statox
Respostas:
12
A configuração de lazyredrawwith :set lazyredrawmelhorará bastante a velocidade de execução da macro, não redesenhando a tela enquanto uma macro estiver sendo executada ou um comando for executado diferente daqueles que você digitar, consulte :help 'lazyredraw'para obter mais informações.
Outra maneira de reduzir é garantir que você não perca tempo com autocmds ou mapeamentos. Se suas macros ainda estiverem lentas após a execução, verifique o arquivo vimrc quanto a mapeamentos lentos ou desnecessários e remova plugins desnecessários. No meu caso, eu tinha um autocmd que executaria um programa externo para desativar o CapsLock ao sair do modo de inserção. Isso era conveniente e normalmente imperceptível, mas diminuía bastante as macros de inserção.
Se sua macro entrar no modo de inserção, onde você tem muitos mapeamentos, pode ser útil ter uma tecla para definir o modo de colar e desativar temporariamente os mapeamentos de inserção, consulte :help 'paste'e :help 'pastetoggle'. Lembre-se de que isso pode dificultar as inserções.
Por fim, mantenha a macro o mais simples possível, minimizando o movimento, a alternância de modo etc.
:set lazyredraw
(:h lazyredraw
)lazyredraw
é provavelmente a melhor solução. Você também pode fornecer sua macro e um arquivo de exemplo para que possamos ver se ele pode ser otimizado.Respostas:
A configuração de
lazyredraw
with:set lazyredraw
melhorará bastante a velocidade de execução da macro, não redesenhando a tela enquanto uma macro estiver sendo executada ou um comando for executado diferente daqueles que você digitar, consulte:help 'lazyredraw'
para obter mais informações.Outra maneira de reduzir é garantir que você não perca tempo com autocmds ou mapeamentos. Se suas macros ainda estiverem lentas após a execução, verifique o arquivo vimrc quanto a mapeamentos lentos ou desnecessários e remova plugins desnecessários. No meu caso, eu tinha um autocmd que executaria um programa externo para desativar o CapsLock ao sair do modo de inserção. Isso era conveniente e normalmente imperceptível, mas diminuía bastante as macros de inserção.
Se sua macro entrar no modo de inserção, onde você tem muitos mapeamentos, pode ser útil ter uma tecla para definir o modo de colar e desativar temporariamente os mapeamentos de inserção, consulte
:help 'paste'
e:help 'pastetoggle'
. Lembre-se de que isso pode dificultar as inserções.Por fim, mantenha a macro o mais simples possível, minimizando o movimento, a alternância de modo etc.
Boa sorte.
fonte