He pasado por la autocmd.txt
ayuda, pero la información sobre esto está dispersa y no siempre está presente (por ejemplo, con BufRead
).
¿Podría alguien que entienda bien esto enumerar el orden de estos eventos, tal vez con las condiciones marcadas en paréntesis, como
WinEnter
BufEnter (if this window is for a different buffer than the current)
y así sucesivamente, para referencia fácil?
Nota (copiada de mi propio comentario a continuación) : no estoy hablando de explicaciones individuales de ellos, que están bien, sino de cómo interactúan entre sí y en qué orden suceden. Por ejemplo, WinEnter
dice "Vim ejecuta los comandos automáticos de BufEnter después de los comandos automáticos de WinEnter", TabEnter
dice "Después de activar el WinEnter y antes de activar el evento BufEnter", todo está disperso así en muchos lugares. Y a veces no se menciona en absoluto (por ejemplo BufRead
, no menciona si se ejecuta después de BufEnter o antes; tal vez un experto puede inferirlo de otra información allí, pero no puedo.
Por lo tanto, mi intención aquí es cree una referencia única y simple para el orden de estos eventos que los no expertos puedan buscar rápidamente,autocmd
especificaciones del evento
fuente
WinEnter
dice "Vim ejecuta los comandos automáticos de BufEnter después de los comandos automáticos de WinEnter",TabEnter
dice "Después de activar el WinEnter y antes de activar el evento BufEnter", todo está disperso así en muchos lugares. Y a veces no se menciona en absoluto (por ej.BufRead
No menciona si se ejecuta después de BufEnter o antes - tal vez un experto puede inferir que de alguna otra pieza de información, pero no puedo.autocmd
especificaciones de eventos.Respuestas:
Para completar la respuesta @sundar:
Puede registrar el orden de los eventos simplemente con una función de registro:
Vea el archivo completo aquí: https://gist.github.com/nobe4/aa8313fe98ca8821afad
Entonces puede
tail -f log
y obtiene una actividad de eventos de autocomando en tiempo real.fuente
Intenté buscar en Google esto con diferentes conjuntos de palabras clave, y obtuve oro en uno de esos intentos con este resultado: http://www.ibm.com/developerworks/library/l-vim-script-5/
Específicamente, esta parte es relevante para la pregunta actual:
Todavía no es del todo completo (por ejemplo, no se menciona a
BufRead
akaBufReadPost
, pero supongo que vendría despuésBufReadCmd
), pero es un excelente comienzo.Sin embargo, una información crucial que falta es cómo los eventos
FileType
ySyntax
autocmd interactúan con esto (suponiendo quefiletype
yasyntax
están activados , y se abre un nuevo archivo cuyo tipo de archivo y sintaxis son conocidos por Vim).fuente
autocmd
s en varios archivos no está bien definido. E incluso con un solo archivo, el orden ha cambiado varias veces con la versión de Vim. Los problemas que esto puede (y causa) causar complementos se han discutido hasta la muerte en vim_dev, y el diseño general no va a cambiar en el futuro predecible. En cuanto a obtener una comprensión integral , bueno, hay 139 ocurrenciasapply_autocmds
en las fuentes de Vim 7.4.827. Buena suerte con eso.autocmd
s en Vim son un desastre, no creo que sea realmente posible escribir una referencia definitiva, excepto por unos pocos casos simples. Supongo que todos se conforman con "generalmente funciona" y se encogen de hombros cuando no es así. En cuanto a neovim, personalmente tengo sentimientos encontrados sobre el proyecto. No he mirado el código recientemente; Supongo que puede obtener una respuesta sobre su rastreador de problemas.