avrei aggiunto una commento, ma non posso formattare la soluzione.
La soluzione feedkeys è grande, con il piccolo intoppo che torna sempre alla modalità normale, indipendentemente da quali altre modalità stavi dentro. Non si vuole annullare la modalità a riga di comando (per il drag & file goccia in Windows) e non ho bisogno di annullare la modalità visiva, volevo solo annullare la modalità di inserimento.
La soluzione, quindi, appare come:
autocmd FocusLost * call PopOutOfInsertMode()
function! PopOutOfInsertMode()
if v:insertmode
feedkeys("\<C-\>\<C-n>")
endif
endfunction
In altre parole, solo pop fuori se si è in una modalità di inserimento. Questo potrebbe essere ulteriormente migliorato, dal momento che v: insertmode sarà 'i' in "normale inserimento", 'r' in modalità Sostituisci, e 'v' in modalità Sostituzione virtuale. Per me, saltar fuori a prescindere è buono, ma l'utente potrebbe voler modificare per soddisfare.
Se questo non funziona per voi in MacVim, sostituire il contenuto di PopOutOfInsertMode
con:
if v:insertmode == 'i' | call feedkeys("\<C-\>\<C-n>") | endif
fonte
2010-10-18 18:18:19
c'è una domanda duplicato e rispondere da superutente: http://superuser.com/questions/236534/change -to-normal-mode-when-macvim-goes-background – rubiii