Nie ma wbudowanej opcji, chociaż :help 'autosave'
(w todo.txt) odnosi się do opisu tego, co taka opcja mogłaby zrobić.
Jednym z możliwych sposobów realizacji tego jest użycie CursorHold
zdarzenia autocommand. To zdarzenie jest wyzwalane, gdy użytkownik nie naciska klawisza przez 'updatetime'
milisekundy.
autocmd CursorHold * update
:update
Komenda zapisuje tylko bufor, jeśli jest on modyfikowany. Jeśli chcesz, aby tak się stało, gdy tryb wstawiania jest aktywny, CursorHoldI
można go dodać do listy zdarzeń.
autocmd CursorHold,CursorHoldI * update
Inną alternatywą jest 'autowrite'
opcja, która zapisze bufor przed wykonaniem zewnętrznego polecenia (przydatne do zapisania przed uruchomieniem :make
) lub przełączeniem na inny bufor.
Vim ma funkcję automatycznego zapisywania, ale zapisuje go w pliku „odzyskiwania”.
Podczas edycji dokumentu, np.
MyFile.txt
Vim utworzy plik odnawiania.MyFile.txt.swp
. Jeśli Twój system ulegnie awarii lub sesja umrze, możesz ponownie połączyć się i odzyskać dane z miejsca, w którym zostało przerwane, wpisując:Spowoduje to otwarcie pliku do edycji i przywrócenie ostatnich wprowadzonych zmian.
Następnie możesz zapisać odzyskaną wersję w normalny sposób
:w
.Niestety, kiedy wyjdziesz z vima, opuści on wszystko
.MyFile.txt.swp
i musisz go usunąć ręcznie:Patrz „Odzyskiwanie” człowiek stronę też rozdział 11
źródło
:wq
lub:q!
lubZZ
lub itp.) Pliki wymiany powinny zostać automatycznie usunięte.Zrobiłem wtyczkę vim-autosave, która używa funkcji Vim 8 Timerów do okresowego zapisywania twoich buforów.
źródło
Sprawiam, że mój Vim zapisuje wszystko za każdym razem, gdy stracisz koncentrację.
Moje wzory są dość długie i używam ich w kilku autocmds, ale dla kompletności wygląda to tak:
źródło
Jak wskazali inni, vim ma plik wymiany (.swp), który zostanie utworzony w dowolnym miejscu, w którym znajduje się oryginalny plik, ale w pliku .vimrc możesz ustawić katalog .swp.
Musisz utworzyć katalog za pomocą,
mkdir
a następnie ustawić .vimrc w tej lokalizacji.źródło
Vim-roboczy Wtyczka ma dość konfigurowalny auto-save funkcji, które mogą zależności od potrzeb. Domyślnie włącza automatyczne zapisywanie w sesji obszaru roboczego (jego główna funkcja), ale możesz ustawić, aby zawsze zapisywało automatycznie, jeśli tylko tego szukasz (
let g:workspace_autosave_always = 1
).źródło
Spróbuj zapisać bufor przy każdej zmianie tekstu:
To działa dla mnie.
Źródło
źródło