Vim'之前'和'以后'命令无法按预期工作

时间:2014-03-19 15:57:11

标签: vim

首先看一下在Vim旅行的时间命令ea {N}slat {N}s,我觉得它很简单。但是,它没有按预期为我工作,现在我完全糊涂了。这就是发生的事。

我解雇了我的Vim,并开始编写以下行

say, first line written at time 5
second line written after a pause of 5 seconds may be around time 18
third line again after a pause of 5 seconds around 30

所以,假设如果我开始在00:00:00写作,我按00:00:05完成第1行,然后暂停了5 seconds,然后00:00:18完成了第2行然后再次暂停约5秒钟,并按00:00:30完成最后的第三行。然后我想到了一个早先的状态,持续了5秒,但当我做了:ea 5s 时,我留下了以下内容:

say, first line written at time 5

vim底部的行说

2 fewer lines; before #2  67 seconds ago

我真的很困惑。然后,我检查了ea /之前命令的帮助,我看到了:

:earlier {N}s       Go to older text state about {N} seconds before.

Vim对关于的意思是什么?这不确切吗?它根本没有任何意义吗?有人可以解释一下吗?

注意:提到的时间可能会有1-2秒的变化。

2 个答案:

答案 0 :(得分:5)

您是否在每行之后离开插入模式?!通常认为尽快退出插入模式是最佳做法;按 Enter 并等待5秒可能不足以构成新的更改。

您可以在<C-g>u插入(也在一行内)时强制创建撤消点。

正如@sehe已经评论过的那样,:changes命令是一个很好的起点。像Gundo - Visualize your undo tree(需要Python)或undotree.vim - Display your undo history in a graph(不)这样的插件可以更轻松地导航和调用树。

答案 1 :(得分:4)

我认为

:changes

:undolist

应该有助于了解历史记录的实际存储方式。从这里很难说出你的情景如何无法满足你的期望(两者都有点模糊)。我只想说当我回顾你的编辑步骤(有时间)时,我得到了:

change line  col text
    3     1    0 say, first line written at time 5
    2     2    0 second line written after a pause of 5 seconds may be around time 18
    1     3    0 third line again after a pause of 5 seconds around 30
>

number changes  when               saved
     4       4  17:01:19