:help FocusLost
dice:
Sólo para la versión GUI y algunas versiones de consola donde se puede detectar esto.
Al hurgar en el código se encontró la función ui_focus_change
cuyo comentario dice:
Se utiliza para la interfaz gráfica de usuario o para los sistemas en los que se puede hacer en la consola (Win32).
Basándonos en la búsqueda de los llamantes, esa afirmación parece exacta (sólo es automáticamente llamado (asincrónicamente) desde el código de la GUI para varias plataformas y (sincrónicamente) desde el código de Windows que no es de la GUI).
Un respuesta a un pregunta relacionada ("¿Puedo hacer que Tmux le diga a Vim cuando su panel pierde el foco?") sobre Unix y Linux señaló un nuevo plugin de Vim llamado Vitalidad . El plugin realiza una serie de configuraciones de Vim para habilitar los autocomandos FocusLost y FocusGained para las instancias que se ejecutan bajo iTermino 2 :
- Configura Vim para enviar unas secuencias de control especiales que provocan iTermino 2 para enviar secuencias de control "focus out" y "focus in" cuando el iTermino 2 la ventana pierde/gana el foco (aunque aparentemente iTermino 2 Actualmente, estas secuencias son un poco confusas cuando se cambia de pestaña dentro de una ventana).
- Configura Vim para que reconozca las secuencias "enfocar hacia fuera" y "enfocar hacia dentro" como teclas poco utilizadas (F24 y F25).
Esto se hace en lugar de simplemente mapear las secuencias para que sea posible habilitar ttimeout
y utilizar un corto ttimeoutlen
para evitar que se produzcan retrasos al pulsar Escape por sí mismo.
- Asigna esas teclas para activar FocusLost y FocusGained (a través de
doautocmd
).
La vitalidad sólo está diseñada para buscar iTermino 2 pero otros emuladores de terminal también admiten las mismas secuencias de control de "notificación de enfoque":
- xterm de 10.6 los soporta (probablemente xterm de la mayoría de las otras plataformas, también)
- Terminal de 10,6 no apoyar las secuencias
- No sé sobre los 10.7 Terminal
Si tiene algún otro emulador de terminal que admita las mismas secuencias de control de enfoque que iTermino 2 / xterm (para los detalles, véase doc/vitality.txt
o busque "Focus" xterm 's ctlseqs ), entonces debería ser bastante fácil extender Vitality para que detecte su emulador de terminal (o simplemente podría fingir ser iTermino 2 estableciendo la variable de entorno ITERM_PROFILE ( export ITERM_PROFILE=not-really-iTerm
)-la variable de entorno es lo único que Vitality utiliza para comprobar iTermino 2 )
0 votos
Publicado en a Unix&Linux 34479 .