He estado tratando de configurar la versión de consola de vim para guardar los archivos modificados cuando la ventana de Terminal pierde el foco.
Seguir estas instrucciones no funciona.
¿Debo suponer que tal vez la razón por la que esto no funciona para una versión de consola de vim es porque solo está diseñado para funcionar con versiones GUI, es decir, MacVim?
¿Hay alguna manera de hacer que esto funcione para una versión de consola de vim?
Estoy usando la última versión de vim disponible en homebrew.
:help FocusLost
dice:
… Solo para la versión GUI y algunas versiones de consola donde esto puede detectarse. …
Husmeando en el código se reveló la función ui_focus_change
cuyo comentario dice:
Se usa para la GUI o para sistemas donde esto se puede hacer en la consola (Win32).
Según la búsqueda de personas que llaman, esa declaración parece precisa (solo se llama automáticamente (asincrónicamente) desde el código GUI para varias plataformas y (sincrónicamente) desde el código de Windows que no es GUI).
Una respuesta a una pregunta relacionada ("¿Puedo hacer que Tmux le diga a Vim cuando su panel pierde el foco?") en Unix y Linux señaló un nuevo complemento de Vim llamado Vitality . El complemento realiza una serie de configuraciones de Vim para habilitar los comandos automáticos FocusLost y FocusGained para instancias que se ejecutan bajo iTerm 2 :
ttimeout
y usar un corto ttimeoutlen
para evitar demoras al presionar Escape por sí mismo.doautocmd
).Vitality solo está diseñado para buscar iTerm 2 , pero otros emuladores de terminal también admiten las mismas secuencias de control de "notificación de enfoque":
Si tiene algún otro emulador de terminal que admita las mismas secuencias de control de enfoque que iTerm 2 /xterm (para obtener detalles, consulte doc/vitality.txt
, o busque ctlseqs de "Focus" xterm ), entonces debería ser bastante fácil extender Vitality para detectar su emulador de terminal (o simplemente podría simular ser iTerm 2 configurando la variable de entorno ITERM_PROFILE ( export ITERM_PROFILE=not-really-iTerm
); la variable de entorno es lo único que utiliza Vitality para verificar iTerm 2 )
chris johnsen