Contexte et fonctionnalité persistante

Vim propose depuis près de vingt ans la persistent undo, c’est‑à‑dire la sauvegarde du journal d’annulation dans un fichier dédié (.un~ ou *.undo) situé dans le répertoire indiqué par undodir. La configuration typique, présentée dans la documentation officielle, ressemble à :

set undofile
set undodir=~/.vim/undo

Cette mécanique permet de récupérer des modifications effectuées plusieurs sessions auparavant, même après redémarrage du système ou mise à jour majeure de l’éditeur. La stabilité du format a été confirmée par des utilisateurs qui, en 2026, évoquent encore des undo files créés en 2000.

Modification du format par NeoVim

NeoVim, fork de Vim lancé en 2014, a introduit en 2026 un nouveau format de fichier d’annulation. Lors du premier démarrage, le programme détecte la présence d’un fichier d’undo créé par Vim, le supprime sans conversion et crée un fichier au format NeoVim, illisible par Vim. L’auteur du post signale que l’opération a entraîné la perte totale de l’historique d’annulation d’un projet en cours.

L’incident a été signalé via un ticket GitHub où la réponse officielle indique que le format « persistent undo » est « instable » et que les utilisateurs ne doivent pas compter sur la conservation des données. Aucun numéro de version précis n’est fourni, mais le changement s’est produit dès la première version stable de NeoVim compatible avec Vim 8.

Analyse du devoir de soin et des risques

David Chisnall cite la première loi de Raskin – « un programme ne doit pas nuire aux données de l’utilisateur, ni, par inaction, les mettre en danger » – pour qualifier ce comportement. En supprimant un fichier contenant l’historique d’un utilisateur sans avertissement, NeoVim contrevient explicitement à ce principe. Le risque principal est la perte de travail non versionné, ce qui peut entraîner des retards de développement, des coûts de reconstruction et une perte de confiance dans l’outil.

Le fait que le format soit déclaré « instable » ne justifie pas la suppression automatique ; une stratégie de migration (conversion du fichier, sauvegarde préalable ou notification) aurait limité l’impact. Le choix de ne pas versionner les undo files, alors même que le code source de Vim les traite comme des données persistantes, montre une lacune de conception en matière de responsabilité envers l’utilisateur.

Implications pour les développeurs et bonnes pratiques

Les développeurs qui intègrent NeoVim dans leurs flux doivent désormais prévoir des sauvegardes explicites du répertoire undodir avant toute mise à jour majeure. Une pratique recommandée consiste à versionner ces fichiers dans un dépôt Git dédié ou à automatiser leur copie vers un stockage résilient. De plus, les mainteneurs d’outils open‑source devraient documenter clairement les changements de format et offrir des scripts de migration afin de respecter le devoir de soin implicite.