Поведінка скасування за замовчуванням у Evil є занадто грубою, тому що вона вважає, що відбувається між входом у режим вставки та залишенням його як одну операцію редагування. Коли ви вводите весь абзац тексту під час однієї вставки та виконайте скасування, весь абзац видаляється. На відміну від цього, Vim запускає новий блок скасування кожного разу, коли ви переміщуєте курсор у режимі вставки іншими способами, ніж введення тексту.
Evil має змінну налаштування, яку можна використовувати для отримання більш тонкої історії скасування:
(setq evil-want-fine-undo t)
За допомогою цього параметра Evil запускає новий блок скасування, коли курсор переміщується у режимі вставки, як і Vim. Однак цей параметр також суперечить тому, як обробляється операція заміни: якщо ви замінюєте слово за допомогою cw
, вам потрібно скасувати двічі, щоб відновити початкове слово: один раз для видалення нового слова та один раз для повторної вставки початкового слова. Це суперечить Vim і не має особливого сенсу, оскільки заміна повинна бути атомною.
Питання: Як я можу налаштувати Зло та скасувати дерево, щоб отримати поведінку Віма відмінити?