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 :preservee 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 :preservee cpoptions' &arrivato. :preserveCostringe 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 :preservequando 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 *.swpfile in cui inserire il suo nuovo file di scambio. Il :recovercomando costringerà Vim a cercare i file di scambio da cui recuperare.
Utilizzando i autocomandi, è possibile automatizzare la conservazione (probabilmente con l' QuitPreevento) e il ripristino (probabilmente con BufReado 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 .swoma nessun .swpfile. Potrebbe essere ancora necessario utilizzare :recoverper quel caso.
vim-obsession è un altro plugin che afferma di rendere molto più semplice la gestione delle sessioni.