Le comportement d'annulation par défaut dans Evil est trop grossier car il considère tout ce qui se passe entre le passage en mode d'insertion et le laisser comme une seule opération d'édition. Lorsque vous entrez un paragraphe entier de texte lors d'une insertion, puis exécutez l'annulation, le paragraphe entier est supprimé. Contrairement à cela, Vim démarre une nouvelle unité d'annulation chaque fois que vous déplacez le curseur en mode insertion par d'autres moyens que la saisie de texte.
Evil a une variable de personnalisation qui peut être utilisée pour obtenir un historique d'annulation plus précis:
(setq evil-want-fine-undo t)
Avec ce paramètre, Evil démarre une nouvelle unité d'annulation lorsque le curseur est déplacé en mode insertion, tout comme Vim. Cependant, ce paramètre perturbe également la façon dont l'opération de remplacement est gérée: si vous remplacez un mot à l'aide cw
, vous devez annuler deux fois pour restaurer le mot d'origine: une fois pour supprimer le nouveau mot et une fois pour réinsérer le mot d'origine. Cela n'est pas cohérent avec Vim et n'a pas beaucoup de sens car replace doit être atomique.
La question: Comment puis-je configurer Evil et undo-tree afin d'obtenir le comportement d'annulation de Vim?