Як я можу отримати скасування поведінки у Злі, подібному до Віма?


17

Поведінка скасування за замовчуванням у Evil є занадто грубою, тому що вона вважає, що відбувається між входом у режим вставки та залишенням його як одну операцію редагування. Коли ви вводите весь абзац тексту під час однієї вставки та виконайте скасування, весь абзац видаляється. На відміну від цього, Vim запускає новий блок скасування кожного разу, коли ви переміщуєте курсор у режимі вставки іншими способами, ніж введення тексту.

Evil має змінну налаштування, яку можна використовувати для отримання більш тонкої історії скасування:

(setq evil-want-fine-undo t)

За допомогою цього параметра Evil запускає новий блок скасування, коли курсор переміщується у режимі вставки, як і Vim. Однак цей параметр також суперечить тому, як обробляється операція заміни: якщо ви замінюєте слово за допомогою cw, вам потрібно скасувати двічі, щоб відновити початкове слово: один раз для видалення нового слова та один раз для повторної вставки початкового слова. Це суперечить Vim і не має особливого сенсу, оскільки заміна повинна бути атомною.

Питання: Як я можу налаштувати Зло та скасувати дерево, щоб отримати поведінку Віма відмінити?


Подайте проблему тут: bitbucket.org/lyro/evil/isissue?status=new&status=open (Зло, як правило, розбіжності від vim вважає помилками).
shosti

@shosti, ви праві, але існування змінної налаштування говорить про те, що вони вирішили зробити виняток із цього правила в цьому випадку. Я все одно подам помилку. Подивимося, що станеться.
tmalsburg

Я думаю, що змінна налаштування насправді полягає в тому, щоб отримати більше Emacs-подібної поведінки на скасування (Emacs не робить атомних операцій так само, як vim).
шості

Ось новий випуск: bitbucket.org/lyro/evil/issue/444/…
tmalsburg

Відповіді:


10

Оскільки @shosti вказав, що Зло розглядає відхилення від поведінки Vim як помилки, я подав помилку, і один з авторів Evil додав нове можливе значення для evil-want-fine-undo:

(setq evil-want-fine-undo 'fine)

За допомогою цього параметра ви отримуєте нові одиниці скасування під час переміщення курсору в режимі вставки, але операції по заміні скасовуються в один крок. Наскільки я можу сказати, це відповідає Віму. Детальніше дивіться тут .


2
Це рішення більше не рекомендується, оскільки 'fineналаштування застаріло.
tmalsburg

1

Відповідно до опису змінної (див. C-h v evil-want-fine-undo) Значення fineбільше не підтримується через непослідовну поведінку.

Оскільки я скасовую помилки друку, або згадане налаштування допомогло мені виділити.

(setq evil-want-fine-undo t) 

У мене була проблема помилки розкручувати в орг-таблиці редагування формули, так як ви не повинні вийти з режиму вставки , якщо ви хочете , щоб змінити *Edit Forumlas*з C-'.


Дякуємо за оновлення. Я попросив відновити проблему в Bitbucket.
tmalsburg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.