Vim puede hacer esto, aunque puede ser un poco torpe y tomar algo de configuración.
romainl te lleva a la mitad session
. Los bits que faltan son archivos de intercambio :preserve
, y la &
bandera de cpoptions
.
Los archivos de intercambio están destinados a la recuperación si Vim o su sistema se bloquean. Le permiten recuperar cualquier cambio no guardado (con algunas limitaciones, consulte :he swap-file
). Sin embargo, cuando Vim sale normalmente, elimina todos los archivos de intercambio que estaba utilizando, incluso si el búfer tenía cambios sin guardar.
Ahí es donde :preserve
y cpoptions
's &
vienen en. :preserve
Fuerzas Vim para escribir todos los tampones a sus archivos de intercambio de inmediato (en comparación con el estándar después de 4 segundos o 200 caracteres, o lo que sus opciones se han fijado a). Hacer :set cpoptions+=&
le dice a Vim que no elimine los archivos de intercambio guardados :preserve
al salir normalmente.
Desafortunadamente, Vim no limpia automáticamente los archivos de intercambio cuando se recupera de ellos, por lo que pronto puede terminar con un directorio como este:
.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt
Puede eliminar los más antiguos manualmente, pero Vim solo ofrecerá automáticamente la recuperación si hay un *.swp
archivo donde colocaría su nuevo archivo de intercambio. El :recover
comando obligará a Vim a buscar archivos de intercambio para recuperarse.
Al usar los comandos automáticos, puede automatizar la conservación (probablemente con el QuitPre
evento) y la recuperación (probablemente con BufRead
o BufReadPost
). Recover.vim es un complemento que podría funcionar como una alternativa más amigable para administrar la recuperación. Parece que también maneja la limpieza de archivos de intercambio. No estoy seguro de cómo manejaría un directorio con .swo
pero sin .swp
archivo. Es posible que aún necesite usar :recover
para ese caso.
vim-obsession es otro complemento que pretende facilitar el manejo de las sesiones.