Cómo ver qué plugins están haciendo Vim lento?
¿ Hay una manera de perfilar los plugins de Vim?
Mi MacVim se vuelve más y más lento cuando abro un .py
grande. Sé que podría deseleccionar todos los complementos y volver a seleccionar uno por uno para verificar qué complemento es el culpable, pero ¿hay una manera más rápida?
Mi dotvim está aquí: https://github.com/charlax/dotvim
5 answers
Puede utilizar el soporte de generación de perfiles integrado: después de lanzar vim do
:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!
(a diferencia de dejar noautocmd
no es realmente necesario, solo hace que vim salga más rápido).
Nota: no obtendrá información sobre las funciones que se eliminaron antes de salir de vim.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-31 13:41:27
He encontrado otro método de compilación vim muy útil para mostrar los mensajes de tiempo exacto mientras carga su.vimrc.
vim --startuptime timeCost.txt timeCost.txt
Por favor ejecute:
:help --startuptime
En VIM para obtener más información.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-03 08:37:31
Podría ser un complemento o el resaltado de sintaxis; pruebe con :syntax off
cuando esto suceda y vea si Vim se vuelve más rápido al instante.
Con los plugins, una "lentitud general" generalmente viene de autocomandos; un :autocmd
los lista todos. Investiga matando a algunos de ellos a través de :autocmd! [group] {event}
. Proceder de los eventos más frecuentes (es decir, CursorMoved[I]
) a los menos frecuentes (por ejemplo, BufWinEnter
).
Si puede reproducir de forma algo fiable la lentitud, una búsqueda binaria podría ayudar: Alejar la mitad de los archivos en ~/.vim/plugin/
, entonces el otro, repite en el set que fue lento.
Si realmente necesita mirar debajo del capó, obtenga una versión de Vim que tenga activado el comando :profile
. (No la versión vanilla BIG Windows, pero la que viene con Cygwin la tiene; además, la autocompilación es bastante fácil en la mayoría de las distribuciones.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-31 12:04:09
Me ha resultado útil imprimir toda la actividad de Vim en un archivo iniciando Vim con la opción -V
:
vim -V12log
Esto proporciona el máximo nivel de detalle (nivel 12) y lo envía al archivo log
. A continuación, puede realizar algunas acciones Vim que sabe que son lentas, y luego ver qué funciones/asignaciones se llaman internamente.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-31 11:00:58
Si tiene problemas con las operaciones de actualización de pantalla (^L
, desplazamiento, etc.) siendo lento, su problema puede ser un archivo de resaltado de sintaxis ineficiente. Puede probar esto deshabilitando temporalmente el resaltado de sintaxis (:syn off
) y viendo si el problema desaparece; si desea profundizar en los detalles, puede perfilar el archivo de sintaxis actual usando :syntime
:
- Abra un archivo que cause problemas de rendimiento de resaltado de sintaxis.
- Ejecute
:syntime on
para iniciar la creación de perfiles. - Desplazamiento a través del archivo un poco.
- Ejecute
:syntime report
para generar un informe. Los patrones enumerados primero en el informe son los que tomaron más tiempo para procesar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-19 19:30:01