Grabé una macro simple y la reproduje en las siguientes líneas, pero parece que la velocidad de reproducción es muy lenta (maneja muy pocas líneas por segundo). ¿Es esto esperado y hay una manera de mejorar esa velocidad?
De hecho, lazyredrawes probablemente la mejor solución. También puede proporcionar su macro y un archivo de muestra para que podamos ver si se puede optimizar.
statox
Respuestas:
12
La configuración de lazyredrawwith :set lazyredrawmejorará en gran medida la velocidad de ejecución de la macro al no volver a dibujar la pantalla mientras se ejecuta una macro o se ejecuta un comando distinto de los que escribe, consulte :help 'lazyredraw'para obtener más información.
Otra forma de reducir es asegurarse de que no tiene tiempo que perder autocmds o asignaciones. Si sus macros siguen siendo lentas después de ejecutarse, revise su archivo vimrc para ver si hay asignaciones lentas o innecesarias y elimine los complementos innecesarios. En mi caso, tenía un autocmd que se ejecutaba y un programa externo para desactivar CapsLock al salir del modo de inserción, esto era conveniente y normalmente imperceptible, pero ralentizaba mucho las macros de inserción.
Si su macro ingresa al modo de inserción, donde tiene muchas asignaciones, puede ser útil tener una clave para establecer el modo de pegado y deshabilitar temporalmente las asignaciones de inserción, vea :help 'paste'y :help 'pastetoggle'. Tenga en cuenta que esto podría dificultar las inserciones.
Finalmente, mantenga la macro lo más simple posible minimizando el movimiento, el cambio de modo, etc.
:set lazyredraw
(:h lazyredraw
)lazyredraw
es probablemente la mejor solución. También puede proporcionar su macro y un archivo de muestra para que podamos ver si se puede optimizar.Respuestas:
La configuración de
lazyredraw
with:set lazyredraw
mejorará en gran medida la velocidad de ejecución de la macro al no volver a dibujar la pantalla mientras se ejecuta una macro o se ejecuta un comando distinto de los que escribe, consulte:help 'lazyredraw'
para obtener más información.Otra forma de reducir es asegurarse de que no tiene tiempo que perder autocmds o asignaciones. Si sus macros siguen siendo lentas después de ejecutarse, revise su archivo vimrc para ver si hay asignaciones lentas o innecesarias y elimine los complementos innecesarios. En mi caso, tenía un autocmd que se ejecutaba y un programa externo para desactivar CapsLock al salir del modo de inserción, esto era conveniente y normalmente imperceptible, pero ralentizaba mucho las macros de inserción.
Si su macro ingresa al modo de inserción, donde tiene muchas asignaciones, puede ser útil tener una clave para establecer el modo de pegado y deshabilitar temporalmente las asignaciones de inserción, vea
:help 'paste'
y:help 'pastetoggle'
. Tenga en cuenta que esto podría dificultar las inserciones.Finalmente, mantenga la macro lo más simple posible minimizando el movimiento, el cambio de modo, etc.
Buena suerte.
fuente