【问题标题】:How to change granularity level of undo in emacs evil-mode with undo-tree?如何使用撤消树更改emacs邪恶模式中撤消的粒度级别?
【发布时间】:2012-05-15 12:23:58
【问题描述】:

这些是一些很棒的选项: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 中的 undo 模式来跟踪除了离开插入模式之外的其他事件。例如,您应该能够长时间处于插入模式,然后撤消任何类型的删除、剪切、粘贴。

【问题讨论】:

  • 基于stackoverflow.com/questions/6590889/…,evil中的额外命令需要调用undo-boundary。
  • 只是因为还没有说过:“您应该像在热煤床上奔跑一样对待插入模式;尽快离开那里”。

标签: vim emacs emacs24 evil-mode


【解决方案1】:

试试evil-want-fine-undo:

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

(setq evil-want-fine-undo t)

【讨论】:

  • 这可能就是答案!我会在一天左右通知你。
  • 太棒了,仍然拯救了我的一天!但是链接坏了:/
【解决方案2】:

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

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

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

这可能非常有用。

【讨论】:

  • 这可能与邪恶模拟vim行为有关,需要如上所示的修改。
猜你喜欢
  • 2012-09-25
  • 2011-04-01
  • 1970-01-01
  • 2011-02-23
  • 2022-12-05
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
相关资源
最近更新 更多