2012-01-31 12 views
5

Próbowałem następujących w moim .vimrc:Jak autozapisywać w Vimie 7, gdy ostrość znika z okna?

:au FocusLost * silent! wa 
autocmd BufLeave,FocusLost silent! wall 

i próbował również:

How can I make Vim autosave files when it loses focus?

ale nie może zmusić go do pracy, kiedy zrobić Ctrl + Z lub przełącznika do innej zakładki w Terminalu (mac) nadal nie zapisuje automatycznie.

+0

Dodano wtyczki znalazłem wydaje czystsze niż ręcznych configs/hacki i spełnia swoje zadanie – bakkal

+0

możliwy duplikat [Jak mogę Vim automatyczny zapis plików gdy traci fokus?] (Http://stackoverflow.com/questions/4637575/how-can-i-make-vim-autosave-files-when-it-loses-focus) –

+0

: au BufUkryte *: wa –

Odpowiedz

11

BufLeave jest wyzwalane, gdy przejdziesz do innego bufora. Ani <C-z>, ani przejście na inną kartę Terminal.app wyzwolą to, ponieważ używasz CLI Vim, który nie dba o grafikę GUI lub środowisko emulatora terminala i ... nie opuszczasz swojego bufora.

To samo dotyczy FocusLost (mniej więcej, doc mówi, że jest to tylko GUI, ale może działać w niektórych terminalach bez informowania, który z nich).

Ustawienia te prawdopodobnie będą działać na MacVim, ale zdecydowanie nie w CLI Vim.

Właściwie, ponieważ Vim nie ma informacji o kartach emulatora terminala ani o tym, że jest on umieszczony w tle, wątpię, byś mógł osiągnąć swój cel w CLI Vim.

zdarza mi się mieć autocmd FocusLost * :wa w moim ~/.vimrc ale umieściłem go w if has("gui_running") warunkowy, a także inoremap <Esc> <Esc>:w<CR> zaoszczędzić na ESC. Mam nadzieję, że to pomoże.

+3

'inoremap : w ' jest niesamowite. Dzięki @romainl – adarsh

+2

@adarsh, 'autocmd InsertLeave * if expand ('%')! = '' | aktualizacja | endif' jest nieskończenie lepszy. – romainl

+1

@romainl, to całkiem świetnie! Pomija takie rzeczy jak "x" lub "dd's" i tak dalej. Co możesz użyć do tego typu poleceń? Tak naprawdę to jest. No cóż, nieważne też jest wcięcie. Zgadnij, że musisz oszczędzać na każdym poleceniu, ale to po prostu wydaje się przesadą nie? – Costa

1

na OS X i Vima CLI, używam tej wtyczki http://www.vim.org/scripts/script.php?script_id=4521

AutoSave - automatycznie zapisać zmiany na dysku, bez konieczności używania :w (lub jakiegokolwiek wiązania do niego) za każdym razem, bufor został zmodyfikowany. Automatyczne zapisywanie jest domyślnie wyłączone, uruchom :AutoSaveToggle, aby włączyć/wyłączyć automatyczne zapisywanie . Jeśli chcesz, aby wtyczka była zawsze włączona, można to zrobić za pomocą opcji g:auto_save (miejsce 'let g:auto_save = 1' w swoim .vimrc).

Powiązane problemy