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

Author: Teun Zengerink, 2012-08-31

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.

 413
Author: ZyX,
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.

 58
Author: feihu,
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.)

 28
Author: Ingo Karkat,
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.

 14
Author: Prince Goulash,
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:

  1. Abra un archivo que cause problemas de rendimiento de resaltado de sintaxis.
  2. Ejecute :syntime on para iniciar la creación de perfiles.
  3. Desplazamiento a través del archivo un poco.
  4. Ejecute :syntime report para generar un informe. Los patrones enumerados primero en el informe son los que tomaron más tiempo para procesar.
 0
Author: duskwuff,
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