24

这些是一些很棒的选项:emacs-24、evil-mode(在 emacs 中使用 vim 绑定)和 undo-tree。

但是,当我处于编辑模式(插入模式)时,我有时会跳来跳去进行数字插入、删除等,然后再点击转义并离开插入模式。

“撤消”将整个插入(包括删除)作为一次编辑。例如,如果不撤消整个删除,我就无法撤消我不小心删除的段落!

有没有什么办法解决这一问题?

以下是一些相关链接:

以下是转换某些 vim 命令以便可以撤消它们的 vim 映射:

inoremap <c-u> <c-g>u<c-u>
inoremap <c-w> <c-g>u<c-w>
inoremap <End> <C-g>u<End>
inoremap <BS> <c-g>u<BS>
inoremap <CR> <c-g>u<CR>
inoremap <del> <c-g>u<del>

需要的是 emacs evil undo-tree 内部的撤消模式来跟踪除了离开插入模式之外的其他事件。例如,您应该能够长时间处于插入模式,然后撤消任何类型的删除、剪切、粘贴。

4

2 回答 2

20

尝试evil-want-fine-undo

操作是否在多个步骤中被撤消。有两种可能的选择: nil(“否”)表示在插入状态期间所做的所有更改,包括更改操作后可能的删除,都在单个撤消步骤中收集。非零(“是”)表示根据 Emacs 启发式确定撤消步骤,并且不尝试聚合更改。

(setq evil-want-fine-undo t)
于 2012-07-25T19:15:37.320 回答
1

这是特定于撤消树的吗?我不使用它,所以以下可能不适用...

我不确定您是否可以修改撤消机制认为是单个单元的编辑量,但您可以做的是:

首先选择一个区域,然后键入撤消键,Emacs 只会撤消在该区域中所做的更改。

这可能非常有用。

于 2012-05-06T22:01:25.167 回答