Tengo muchos complementos habilitados cuando uso Vim, he recopilado complementos a lo largo de los años. Estoy un poco harto de cuánto tiempo tarda Vim en comenzar ahora, así que me gustaría perfilar su inicio y ver cuál de los muchos complementos que tengo son responsables.
¿Hay alguna forma de perfilar el inicio de Vim o la ejecución de scripts? Idealmente, me gustaría saber cuánto tiempo pasa Vim en cada script de Vim que carga.

vim --startuptime /dev/stdout +qalltime vim +qsi solo quieres cronometrar el inicio de vim como un todo.vim --startuptime /dev/stdout +qallyvim --startuptime vim.log +qall; cat vim.log.Puede utilizar el propio mecanismo de creación de perfiles vim:
Después de ejecutar lo anterior, encontrará un archivo llamado profile.log en el directorio actual con toda la información requerida. Para obtener una tabla de información por script similar a una por función ya presente, use (después de abrir este archivo en vim):
No estará ordenado, pero siempre puede usar el
:sortcomando incorporado si el número de scripts es demasiado grande.fuente
dbext.vim, que tardógvim --cmd 'profile start profile.log' --cmd 'profile func *' --cmd 'profile file *' -c 'profdel func *' -c 'profdel file *' -c 'qa!'Crea muchos archivos vacíos en vim.He creado este proyecto Github con el fin de responder mejor a su pregunta. Básicamente, resume el tiempo para cada función que llama para cada plugin, lo que no es obvio (pero importante) a partir de la salida del perfil vim sin procesar. Bash, Python, R, Ruby son compatibles para crear los resultados de creación de perfiles.
Obtendrá una cifra de resultado como esta:
Junto con la salida de texto como esta:
fuente
!antes de la etiqueta.Puede ejecutar
vim -V, canalizar la salida a través de una utilidad que agrega marcas de tiempo y analizar la salida. Esta línea de comando hace esto, por ejemplo:Es posible que deba escribir a ciegas :qpara volver a su mensaje. Luego, debe encontrar el archivo
vilogen su directorio actual con marcas de tiempo de contrataciones al comienzo de cada línea.Si puede hacerlo con una granularidad de un segundo, puede hacer esto:
fuente
Basado en el trabajo realizado por @hyiltiz que depende de R, hice una versión de Python del generador de perfiles, ya que esto está más a menudo disponible en un sistema que R.
También es un poco más fácil de extender, por lo tanto, las características son:
El resultado es similar a lo que proporciona vim-plugins-profile:
fuente
No plugin found.Refiné la solución vim -V por innaM para mostrar el tiempo delta:
fuente
Si está cargando sus complementos desde un archivo .vimrc, lo que podría hacer es colocar una
qlínea en algún punto del archivo para que se cierre y pueda usar un temporizador de proceso, como eltimecomando unix . Más a fondo, esto se vería así:.vimrcarchivo existenteqlíneatime vimrepetidamente y promedioEsto no es elegante, pero creo que hará el trabajo.
fuente
Hay un complemento para perfilar el tiempo de inicio de vim.
http://www.vim.org/scripts/script.php?script_id=2915
fuente
Puede ser conveniente rastrear
--startimeal abrir un archivo en particularfuente
¿No hay un
timecomando bash que pueda usarse así:EDITAR : no incluye el tiempo de inicio de los scripts. Utilice la sugerencia @jamessan en su lugar.
fuente