Vim kann dies tun, obwohl es etwas klobig sein kann und einige Einstellungen erfordert.
Romainl bringt dich auf halbem Weg mit session
. Die fehlenden Bits sind Auslagerungsdateien :preserve
und das &
Flag für cpoptions
.
Auslagerungsdateien sind für die Wiederherstellung vorgesehen, wenn Vim oder Ihr System abstürzt. Mit ihnen können Sie nicht gespeicherte Änderungen wiederherstellen (mit einigen Einschränkungen, siehe :he swap-file
). Wenn Vim jedoch normal beendet wird, werden alle verwendeten Auslagerungsdateien gelöscht, selbst wenn der Puffer nicht gespeicherte Änderungen hatte.
Das ist , wo :preserve
und cpoptions
‚s &
kommt in. :preserve
Kräften Vim alle Puffer , um ihre Swap - Dateien sofort zu schreiben (wie nach 4 Sekunden oder 200 Zeichen zum Standard im Gegensatz oder was auch immer Ihre Optionen eingestellt haben es). Wenn Sie dies tun, :set cpoptions+=&
wird Vim angewiesen, die beim normalen Beenden gespeicherten Auslagerungsdateien nicht zu löschen :preserve
.
Leider bereinigt Vim Swap-Dateien bei der Wiederherstellung nicht automatisch, sodass Sie bald ein Verzeichnis haben können, das folgendermaßen aussieht:
.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt
Sie können die älteren manuell löschen, aber Vim bietet nur dann automatisch eine Wiederherstellung an, wenn es eine *.swp
Datei gibt, in der die neue Auslagerungsdatei abgelegt wird. Der :recover
Befehl zwingt Vim, nach Auslagerungsdateien zu suchen, von denen wiederhergestellt werden kann.
Mithilfe von Auto-Befehlen können Sie das Speichern (wahrscheinlich mit dem QuitPre
Ereignis) und das Wiederherstellen (wahrscheinlich mit BufRead
oder BufReadPost
) automatisieren . Recover.vim ist ein Plugin, das möglicherweise als benutzerfreundlichere Alternative für die Verwaltung der Wiederherstellung fungiert. Es scheint auch die Bereinigung von Auslagerungsdateien zu handhaben. Ich bin nicht sicher, wie es mit einem Verzeichnis mit einer, .swo
aber ohne .swp
Datei umgehen würde . Möglicherweise müssen Sie :recover
für diesen Fall noch verwenden.
vim-obsession ist ein weiteres Plugin, das behauptet, die Handhabung von Sitzungen erheblich zu vereinfachen.