VIM - 如何让撤消让我回到之前的模式?

VIM - How to I make Undo put me back in what ever mode I was on previously?

我经常在正常模式下编辑东西只是为了意识到我的更改不是故意的,因此,我撤消然后按 K/L/J/H 继续但同时我已经处于插入模式,所以我有先摆脱它。

我想在我的 .vimrc 中插入一条规则,让我回到我所做的任何更改之前的模式。

IE: shift+s (删除行并开始编辑) -> undo : 回到正常模式 奖励:ciw -> asdahsdasdh -> 撤消:回到正常模式

PS:我实际上是通过 Command+Z 使用撤消,这是 MacOSX 的默认撤消组合。

OS X 正在捕获 Cmdz 键盘事件并在应用程序级别处理撤消,因此任何映射<D-z> 将被忽略。但是,您可以覆盖它以执行您想要的操作。

首先,将映射添加到您的 .vimrc:

if has("gui_running")
    inoremap <D-z> <Esc>:undo<CR>
endif

重新启动 MacVim 以确保 .vimrc 已重新加载。

为了让它工作你还需要告诉 MacVim 不要使用 Cmdz 作为 "Undo" 菜单项.

(这些说明基于 Yosemite/El Capitan,但与旧版本相似。)

  1. 转到“系统偏好设置”应用程序。
  2. 单击键盘图标。
  3. 单击“快捷方式”部分。
  4. 单击左栏中的“应用程序快捷方式”。
  5. 单击“+”按钮添加新规则。
  6. 从应用程序下拉菜单中选择 MacVim。
  7. 在“菜单标题”框中键入 "Undo"(仅此而已)。
  8. 单击“键盘快捷键”框,然后选择一些您永远不会实际使用的快捷键。
  9. 单击 "Add",然后关闭系统偏好设置。

(我选择了ShiftCtrlOptCmdx.)

现在回到 MacVim,如果你下拉编辑菜单,"Undo" 应该有你选择的组合键,你的 Cmd z 快捷方式应该按照您的描述工作。