Salvataggio di file su focus perso nella console Vim

2

Ho provato a configurare la versione della console di vim per salvare qualsiasi file modificato quando la finestra di Terminale perde lo stato attivo.

Seguendo le queste istruzioni non funzionano.

Devo presumere che forse il motivo per cui questo non funziona per una versione di console di vim è perché è destinato solo a funzionare con le versioni della GUI, ad esempio MacVim?

C'è un modo per far funzionare tutto questo per una versione di console di vim?

Sto usando l'ultima versione di vim disponibile in homebrew.

    
posta Diego Barros 19.03.2012 - 01:56
fonte

1 risposta

2

:help FocusLost dice:

… Only for the GUI version and a few console versions where this can be detected. …

Girare nel codice ha rivelato la funzione ui_focus_change il cui commento dice:

Used for the GUI or for systems where this can be done in the console (Win32).

Basato sulla ricerca di chiamanti, questa affermazione sembra accurata (è solo automaticamente chiamata (in modo asincrono) dal codice GUI per varie piattaforme e (in modo sincrono) dal codice Windows non-GUI).

Una risposta a un domanda correlata (" Posso fare in modo che Tmux dica a Vim quando il pannello si spegne? ") su Unix & Linux ha indicato un nuovo plug-in Vim chiamato Vitality . Il plugin crea una serie di configurazioni Vim per abilitare gli autocomandi FocusLost e FocusGained per le istanze in esecuzione in iTerm 2 :

  • Configura Vim per inviare sequenze di controllo speciali che causano iTerm 2 per inviare "focus out" e "focus in" sequenze di controllo quando la finestra iTerm 2 perde / guadagna attenzione (anche se apparentemente iTerm 2 al momento armeggia queste sequenze un po 'quando si cambiano le schede all'interno di una finestra).
  • Configura Vim per riconoscere le sequenze "focus out" e "focus in" come tasti usati di rado (F24 e F25).
    Ciò avviene invece di mappare semplicemente le sequenze, in modo che sia possibile abilitare ttimeout e utilizzare un ttimeoutlen breve per evitare ritardi quando si preme Escape da solo.
  • Mappa quei tasti per attivare FocusLost e FocusGained (tramite doautocmd ).

Vitality è progettato solo per cercare iTerm 2 , ma altri emulatori di terminale supportano anche le stesse sequenze di controllo "focus notification":

  • xterm di 10.6 li supporta (probabilmente xterm anche dalla maggior parte delle altre piattaforme)
  • Terminale da 10.6 non supporta le sequenze
  • Non conosco il terminale di 10.7

Se hai qualche altro emulatore di terminale che supporta le stesse sequenze di controllo della messa a fuoco come iTerm 2 / xterm (per i dettagli, vedi doc/vitality.txt , oppure cerca "Focus" xterm ctlseqs ), allora dovrebbe essere abbastanza facile estendere Vitality per rilevare il tuo emulatore di terminale (o potresti semplicemente fingere di essere iTerm 2 impostando la variabile d'ambiente ITERM_PROFILE ( export ITERM_PROFILE=not-really-iTerm ) - la variabile d'ambiente è l'unica cosa che Vitality usa per controllare iTerm 2 )

    
risposta data 19.03.2012 - 06:51
fonte

Leggi altre domande sui tag