如何撤消击键(VIM)

时间:2015-01-11 03:29:56

标签: vim

当一个人意外地按下一个键时,Vim的撤销系统会变得有些麻烦......

  • 更改模式。
  • 执行多项操作。

是否有一种方法可以将vim恢复到状态(光标位置,模式和文本缓冲区) vim在按下该键之前的状态?


要详细说明这一点,请说我处于插入模式并按Returno, 使用我当前的.vimrc将保留当前缩进。这就是我想要的 - 但这意味着撤消意外按键不再是单一动作(在这种情况下我必须按Esc, u)。

1 个答案:

答案 0 :(得分:3)

Vim的撤销系统非常强大(使用撤消分支等),但它仍然仅限于文本更改。相反,编辑器状态(当前模式,缓冲区等)未被覆盖;关于撤消的任何更改只有在它们是撤消文本更改的副作用时才会发生(因此,例如,当您撤消删除时,光标会移回以前删除的范围)。

很难想象具有您描述的功能的撤消系统如何工作,但我想其他更改"更改"会有点混乱而不是有用,所以我不认为这是可取的。

如果您偶尔会因模式更改或意外执行映射而感到惊讶,请尝试改进您的设置,例如:通过:

  • 清楚地突出显示当前模式( Airline 等插件在状态栏中突出显示,包括颜色变化)
  • 通过:set showcmd
  • 显示部分映射
  • 增加'timeoutlen',以便您有更多时间输入(长)映射
  • 重构您的映射,以便更容易键入,或者更喜欢自定义命令而不是映射(避免超时问题)