¿Hay algún complemento vim que implemente la función de salida en caliente del texto sublime?

11

Hot exit es una de las características más importantes del editor Sublime Text. Permite cerrar el editor en cualquier momento sin preocuparse por las modificaciones en los archivos abiertos; simplemente se cierra sin ninguna pregunta. Cuando inicie ST nuevamente, todos los archivos abiertos y editados estarán en el mismo estado que tenían antes de cerrar

Me pregunto ¿hay alguna manera de hacer lo mismo en vim?

Perezosos
fuente
: xa salir de todo (guardar todos los cambios y cerrar Vim)
Sim
Esto escribe los archivos, pero no guarda nada más. Creo que el OP quiere algo que guarde los archivos sin escribirlos y que guarde el estado de las pestañas abiertas o las memorias intermedias
EvergreenTree
Sí, lo entendí más tarde por sus comentarios.
Sim

Respuestas:

6

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 :preservey cpoptions's &vienen en. :preserveFuerzas 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 :preserveal 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 *.swparchivo donde colocaría su nuevo archivo de intercambio. El :recovercomando obligará a Vim a buscar archivos de intercambio para recuperarse.

Al usar los comandos automáticos, puede automatizar la conservación (probablemente con el QuitPreevento) y la recuperación (probablemente con BufReado 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 .swopero sin .swparchivo. Es posible que aún necesite usar :recoverpara ese caso.

vim-obsession es otro complemento que pretende facilitar el manejo de las sesiones.

8bittree
fuente
1

Si. Se llama "sesión" y puedes leer todo sobre esto en:

:help session
romainl
fuente
1
Soy consciente de las sesiones. Pero parece que no es lo mismo: guarda todos los búferes y pestañas abiertas (y configuraciones), pero si tiene algunos cambios en uno de los búferes, debe escribirlos en el disco antes de salir. En el texto sublime no necesita guardar el archivo abierto al salir; sublime guarda todos los cambios en él en un lugar separado y los restaura al volver a abrir. Por lo tanto, el archivo original está intacto en el disco, pero los cambios tampoco se pierden
LazyS
Sí, esa sería la principal diferencia. No tengo idea si se puede lograr de alguna manera sin recurrir a tmux / screen / detach.
romainl