Vim'早期'和'后'命令没有按预期工作

Man*_*ain 2 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
Run Code Online (Sandbox Code Playgroud)

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

say, first line written at time 5
Run Code Online (Sandbox Code Playgroud)

vim底部的线说

2 fewer lines; before #2  67 seconds ago
Run Code Online (Sandbox Code Playgroud)

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

:earlier {N}s       Go to older text state about {N} seconds before.
Run Code Online (Sandbox Code Playgroud)

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

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

Ing*_*kat 5

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

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

正如@sehe已经评论过的那样,这个:changes命令是一个很好的起点.像Gundo这样的插件- 可视化您的撤消树(需要Python)或undotree.vim - 在图形中显示撤消历史(不)可以更轻松地导航和调用树.