在Vim中,为什么临时正常模式(插入模式下的Ctrl-O)执行命令要慢得多?

时间:2016-02-17 10:30:07

标签: vim

通常,当我想在Vim中编辑文本时撤消更改时,我必须:

  1. 使用Esc
  2. 退出插入模式
  3. u撤消更改
  4. 使用各种命令(io等进入插入模式...)
  5. 现在,我只是一个初学者,但据我所知,在插入模式下,您可以使用Ctrl-O暂时转入一个命令的正常模式。

    知道这一点,当我想要撤消文本中的更改时,我想:为什么不只是进入临时正常模式并按u而不必处理Esc的所有恶作剧并切换模式之间?

    所以我做了以下事情:

    1. 使用Ctrl-O
    2. 进入一个命令的临时正常模式
    3. u撤消更改
    4. 我自动处于插入模式并继续编辑。
    5. 它有效......除非它非常非常。慢。 执行撤销后,光标会立即放置在该位置,但文本中的更改不会显示,直到约2秒后。这已经很长时间了。

      我认为这只是我的电脑由于某种原因而慢慢运行,但我做了老派的方式,撤消立即执行。当然,并非所有命令的情况都是如此。当我尝试dd并删除整行时,它会立即按预期工作 -

      所以我的问题是:为什么?临时正常模式与按下Esc时输入的正常模式不同吗?它与缓冲区,交换文件或幕后发生的任何事情有关吗?这是在Vim编辑器中实现undo的方式吗?

1 个答案:

答案 0 :(得分:2)

看起来Vim正在等待可能的第二次按键,即对命令的动作(例如,dw,其正常执行)。显然u命令没有动作,但是双击uu会快速执行撤消,然后它会将下一个u插入到文档中。我怀疑这是'临时正常模式'如何决定何时返回'插入模式'的怪癖。