2012-08-31 19 views
223

¿Hay alguna forma de crear un perfil de los complementos de Vim?¿Cómo ver qué complementos están haciendo lento a Vim?

Mi MacVim se vuelve cada vez más lento cuando abro un gran .py. Sé que puedo anular la selección de todos los complementos y volver a seleccionarlos 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

+3

Ver http://stackoverflow.com/questions/1687799/profiling-vim-startup-time – chelmertz

+0

En realidad, el inicio está bien. Vim se vuelve lento después de unos minutos de uso. Se refiere especialmente a los archivos '.py'. – charlax

+0

La búsqueda binaria * es * el camino a seguir. Usted hizo su pregunta hace 2 horas, la causa de su problema se habría encontrado en ese momento. La corazonada de 'autocmd' de Ingo Karkat me parece plausible. – romainl

Respuesta

353

Se puede utilizar una función de perfiles de apoyo: después de iniciar vim hacer

:profile start profile.log 
:profile func * 
:profile file * 
" At this point do slow actions 
:profile pause 
:noautocmd qall! 

(a diferencia de dejar de fumar noautocmd no es realmente necesario, simplemente hace que vim salga más rápido).

Nota: no se obtendrá información sobre las funciones que se eliminaron antes de que vim lo abandone.

+12

Esto es asombroso. Pude ver que EasyTags es el culpable. ¡Muchas gracias! – charlax

+1

Esto realmente me ayudó. Descubrí que vim-signify y tagbar estaban ralentizando vim MUCHO. ¡No vale la pena! –

+4

esto me ayudó a detectar "vim-gitgutter" como la obstrucción. –

11

he encontrado que es útil para imprimir toda la actividad de Vim a 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 de Vim que sabe que son lentas y luego ver qué funciones/asignaciones se están llamando internamente.

+8

pero no hay sincronización en el registro – Kokizzu

26

Podría ser un complemento o resaltado de sintaxis; intente con :syntax off cuando esto ocurra y vea si Vim se acelera al instante.

Con los complementos, una "lentitud general" por lo general proviene de autocomandos; a :autocmd los enumera a todos. Investigue matando a algunos de ellos a través del :autocmd! [group] {event}. Proceda desde eventos más frecuentes (es decir, CursorMoved[I]) hasta los menos frecuentes (por ejemplo, BufWinEnter).

Si puede reproducir de manera confiable la lentitud, una búsqueda binaria puede ayudar: alejar la mitad de los archivos en ~/.vim/plugin/, luego la otra, repetir en el conjunto que fue lento.

Si realmente necesita mirar debajo del capó, obtenga una versión de Vim que tenga habilitado el comando :profile. (. No es la versión de vainilla grandes ventanas, pero la que se entrega con Cygwin lo tiene, también, la auto-compilación es bastante fácil en la mayoría de las distribuciones)

50

Encontré otro método vim buildin muy útil para mostrar los mensajes de sincronización exacta al cargar su .vimrc.

vim --startuptime timeCost.txt timeCost.txt 

Por favor, ejecute:

:help --startuptime 

en VIM para obtener más información.

+1

Por si acaso alguien más se pregunta, esto no existe en todas las distribuciones vim/gvim. No en una acción Gvim 7.4 gana aquí (aunque está documentado en viminfo) – thynctank

+1

@thynctank Probé con mi gvim 7.4 y funcionó. Aquí está mi versión 'IM - Vi IMproved 7.4 (10 de agosto de 2013, compilado el 10 de agosto de 2013 14:33:40)' – feihu

+0

¡La mejor respuesta! Me ayudó a identificar el complemento más lento que me hizo enojar en cada inicio de vim. Gracias :) – kovpack

Cuestiones relacionadas