Vim peut le faire, même si cela peut être un peu maladroit et nécessiter une certaine configuration.
romainl vous aide à mi-chemin session
. Les bits manquants sont les fichiers d'échange :preserve
et le &
drapeau de cpoptions
.
Les fichiers d'échange sont destinés à la récupération en cas de panne de Vim ou de votre système. Ils vous permettent de récupérer toutes les modifications non enregistrées (avec certaines limitations, voir :he swap-file
). Cependant, lorsque Vim se ferme normalement, il supprime tous les fichiers d'échange qu'il utilisait, même si le tampon avait des modifications non enregistrées.
C'est là :preserve
et cpoptions
« s &
entrent en jeu . :preserve
Forces vim pour écrire tous les tampons à leurs fichiers d'échange immédiatement (par opposition à la norme après 4 secondes ou 200 caractères, ou quels que soient vos options ont mis à). Faire :set cpoptions+=&
indique à Vim de ne pas supprimer les fichiers d'échange échangés avec :preserve
lors de la fermeture normale.
Malheureusement, Vim ne nettoie pas automatiquement les fichiers d'échange lors de leur récupération, vous pouvez donc bientôt vous retrouver avec un répertoire ressemblant à ceci:
.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt
Vous pouvez supprimer les plus anciens manuellement, mais Vim ne proposera automatiquement de récupérer que s'il y a un *.swp
fichier où il mettra son nouveau fichier d'échange. La :recover
commande forcera Vim à rechercher les fichiers d'échange à récupérer.
En utilisant les autocommandes, vous pouvez automatiser la conservation (probablement avec l' QuitPre
événement) et la récupération (probablement avec BufRead
ou BufReadPost
). Recover.vim est un plugin qui pourrait fonctionner comme une alternative plus conviviale pour gérer la récupération. Il semble également gérer le nettoyage des fichiers d'échange. Je ne sais pas comment il gérerait un répertoire avec un fichier .swo
mais pas .swp
. Vous devrez peut-être encore utiliser :recover
pour ce cas.
vim-obsession est un autre plugin qui prétend faciliter la gestion des sessions.