Vim może to zrobić, choć może być trochę niezręczny i wymaga trochę konfiguracji.
romainl pozwala ci się z tobą rozstać session
. Brakujące bity to pliki wymiany :preserve
i &
flaga dla cpoptions
.
Pliki wymiany są przeznaczone do odzyskiwania w przypadku awarii Vima lub systemu. Umożliwiają odzyskanie niezapisanych zmian (z pewnymi ograniczeniami, patrz :he swap-file
). Jednak gdy Vim kończy się normalnie, usuwa wszystkie używane pliki wymiany, nawet jeśli bufor zawiera niezapisane zmiany.
To gdzie :preserve
i cpoptions
„s &
przyjść. :preserve
Siły Vim napisać wszystkie bufory do swoich plików wymiany natychmiast (w przeciwieństwie do normy po 4 sekundach lub 200 znaków, czy cokolwiek twoje opcje ustawić go na). Robienie :set cpoptions+=&
mówi Vimowi, żeby nie kasował plików wymiany zapisanych :preserve
przy normalnym wychodzeniu.
Niestety, Vim nie usuwa automatycznie plików wymiany podczas odzyskiwania z nich, więc wkrótce możesz skończyć z katalogiem wyglądającym tak:
.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt
Możesz usunąć starsze ręcznie, ale Vim automatycznie zaoferuje odzyskanie tylko wtedy, gdy istnieje *.swp
plik, w którym umieściłby swój nowy plik wymiany. :recover
Komenda zmusi Vima szukać plików wymiany w celu odzyskania od.
Korzystając z poleceń automatycznych, możesz zautomatyzować przechowywanie (prawdopodobnie ze QuitPre
zdarzeniem) i odzyskiwanie (prawdopodobnie za pomocą BufRead
lub BufReadPost
). Recover.vim to wtyczka, która może działać jako przyjazna alternatywa dla zarządzania odzyskiwaniem. Wygląda na to, że obsługuje również czyszczenie plików wymiany. Nie jestem pewien, jak poradziłby sobie z katalogiem z plikiem, .swo
ale bez .swp
pliku. W :recover
tym przypadku może być konieczne użycie .
vim-obsession to kolejna wtyczka, która twierdzi, że znacznie ułatwia obsługę sesji.