Vim può farlo, anche se può essere un po 'goffo e richiedere un po' di installazione.
romainl ti porta a metà stradasession
. I bit mancanti sono file di scambio :preserve
e il &
flag per cpoptions
.
I file di scambio sono destinati al recupero in caso di arresto anomalo di Vim o del sistema. Ti consentono di recuperare eventuali modifiche non salvate (con alcune limitazioni, vedi :he swap-file
). Tuttavia, quando Vim esce normalmente, elimina tutti i file di scambio che stava usando, anche se il buffer aveva modifiche non salvate.
Ecco dove :preserve
e cpoptions
' &
arrivato. :preserve
Costringe Vim a scrivere immediatamente tutti i buffer nei loro file di scambio (al contrario dello standard dopo 4 secondi o 200 caratteri, o qualunque sia la tua opzione). Fare :set cpoptions+=&
dice a Vim di non cancellare i file di scambio salvati :preserve
quando si esce normalmente.
Sfortunatamente, Vim non ripulisce automaticamente i file di scambio durante il ripristino da essi, quindi puoi presto finire con una directory simile a questa:
.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt
Puoi eliminare quelli più vecchi manualmente, ma Vim offrirà automaticamente di recuperare solo se esiste un *.swp
file in cui inserire il suo nuovo file di scambio. Il :recover
comando costringerà Vim a cercare i file di scambio da cui recuperare.
Utilizzando i autocomandi, è possibile automatizzare la conservazione (probabilmente con l' QuitPre
evento) e il ripristino (probabilmente con BufRead
o BufReadPost
). Recover.vim è un plug-in che potrebbe funzionare come alternativa più amichevole per la gestione del recupero. Sembra anche gestire la pulizia dei file di scambio. Non sono sicuro di come gestirà una directory con un file .swo
ma nessun .swp
file. Potrebbe essere ancora necessario utilizzare :recover
per quel caso.
vim-obsession è un altro plugin che afferma di rendere molto più semplice la gestione delle sessioni.