La dernière nouvelle sur vim.org parle de l’utilisation du 'undofile' pour sauvegarder votre historique et annuler les modifications, même après un redémarrage:
Une fonctionnalité que j'aime utiliser moi-même n'est pas connue de nombreux utilisateurs, comme je l'ai découvert le week-end dernier. En plus d'annuler avec autant de niveaux que vous le souhaitez, Vim permet également de stocker les informations d'annulation dans un fichier. Vous pouvez ainsi quitter Vim, redémarrer votre ordinateur et toujours annuler les modifications que vous avez apportées. Voir l'aide pour 'undofile'. (Bram Moolenaar)
Comment puis-je activer et utiliser cette fonctionnalité?
persistent-state
undo-redo
annuler
la source
la source
Réponses:
La version la plus simple est: créer un
~/.vim/undo-dir/
répertoire et ajouter ce qui suit au.vimrc
:Cependant, ce n'est pas parfait, et il vaut mieux continuer à lire. De la mienne
.vimrc
:Je préfère ne pas encombrer de répertoires aléatoires avec des fichiers d'annulation. J'ai donc défini l'
undodir
option qui met tous ces éléments dans un répertoire d'annulation. Cela pose un problème: je suis paresseux et je n’ai pas l’impression de créer ce répertoire sur toutes mes machines (j’utilise un système de contrôle de version pour synchroniser mes.vimrc
tâches sur plusieurs machines). Heureusement, il est assez facile de demander à Vim de vérifier et de créer les répertoires s’ils n’existent pas.Notez également le
0700
mode sur le répertoire d'annulation (c'est-à-dire des autorisations complètes pour le propriétaire, aucune autorisation pour quiconque). Quels fichiers j'ai édités, quand, etc. devraient rester privés. Et comme il ne s'agit que d'un répertoire auquel je peux accéder, je n'ai pas à craindre que quelqu'un d'autre y mette un lien symbolique, ni son propre fichier d'annulation, ni à quoi que ce soit, car vous auriez à vous soucier de l'utilisation d'un répertoire temporaire du système.Enfin, n'étant pas un répertoire temporaire du système, il n'est pas soumis à la stratégie de nettoyage du fichier temporaire du système. Souvent, c'est assez court - une semaine ou deux. Mais pour l'empêcher de grandir pour toujours, j'ai mis ce qui suit dans mon
crontab
:Donc, après 90 jours sans modification, ils sont supprimés. (Honnêtement, ils ne sont pas si gros que ça, vous pourriez facilement les laisser pour toujours avec le prix du disque. Mais considérez également votre propre vie privée si votre machine est un jour compromise.)
la source
mkdir()
fonction supporte la création de plusieurs structures de répertoires avec l'"p"
option pour{path}
paramètre. Donc, le script ci-dessus peut être un peu simplifié. Utiliser descall mkdir($HOME."/.vim/undo-dir", "p", 0700)
œuvres pour moi dans Vim 7.4.160 au moins.