Czy jest jakaś wtyczka vima, która implementuje funkcję gorącego wyjścia z wysublimowanego tekstu?

11

Szybkie wyjście jest jedną z zabójczych funkcji edytora Sublime Text. Umożliwia zamknięcie edytora w dowolnym momencie bez obawy o zmiany w otwartych plikach - po prostu zamyka się bez pytania. Po ponownym uruchomieniu ST wszystkie otwarte i edytowane pliki będą w tym samym stanie, co przed zamknięciem

Zastanawiam się, czy istnieje sposób, aby zrobić to samo w vimie?

Leniwy
źródło
: xa zamknij wszystko (zapisz wszystkie zmiany i zamknij Vima)
Sim
To zapisuje pliki, ale nie zapisuje nic innego. Myślę, że OP chce czegoś, co zarówno zapisuje pliki bez ich zapisywania, jak i zapisuje stan wszystkich otwartych kart lub buforów
EvergreenTree
Tak, zrozumiałem to później z jego komentarzy.
Sim

Odpowiedzi:

6

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 :preservei &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 :preservei cpoptions„s &przyjść. :preserveSił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 :preserveprzy 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 *.swpplik, w którym umieściłby swój nowy plik wymiany. :recoverKomenda zmusi Vima szukać plików wymiany w celu odzyskania od.

Korzystając z poleceń automatycznych, możesz zautomatyzować przechowywanie (prawdopodobnie ze QuitPrezdarzeniem) i odzyskiwanie (prawdopodobnie za pomocą BufReadlub 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, .swoale bez .swppliku. W :recovertym przypadku może być konieczne użycie .

vim-obsession to kolejna wtyczka, która twierdzi, że znacznie ułatwia obsługę sesji.

8bittree
źródło
1

Tak. Nazywa się to „sesją” i możesz o tym przeczytać w:

:help session
romainl
źródło
1
Jestem świadomy sesji. Ale wygląda na to, że to nie to samo - zapisuje wszystkie otwarte bufory i karty (i ustawienia), ale jeśli masz jakieś zmiany w jednym z buforów, musisz je zapisać na dysku przed wyjściem. W wysublimowanym tekście nie trzeba zapisywać otwartego pliku przy wyjściu - sublime zapisuje wszystkie zmiany w osobnym miejscu i przywraca je po ponownym otwarciu. Oryginalny plik jest więc nietknięty na dysku, ale zmiany też nie zostały utracone
LazyS
Tak, to byłaby główna różnica. Nie mam pojęcia, czy można to osiągnąć w jakikolwiek sposób bez uciekania się do tmux / screen / detach.
romainl,