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