2014-03-19 51 views
2

首先看Vim中的时间命令,即ea {N}slat {N}s,我认为它会非常简单。但是,它并没有像预期的那样为我工作,现在我完全困惑。这是发生了什么事。Vim的'早期'和'后期'命令没有按预期工作

我启动了我的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写作,我完成了1号线由00:00:05,然后我拿了5 seconds暂停,然后完成第2行00:00:18,然后再次停顿约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秒的变化。

回答

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 
+0

嗯..我看到了。实际上我预计vim会让我回到5秒前的状态..例如,假设我写了最后一行,然后暂停5秒,然后运行命令:然后根据我的预期,由于5秒钟之前文件完全相同,因此不应该更改任何内容。我认为我把Vim的“时间旅行”看得太简单了。 –

4

你离开插入模式每行之后?通常认为尽快离开插入模式是一种最佳做法;按输入并等待5秒可能不足以构成新的更改。

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

由于已经评论过,:changes命令是一个很好的起点。像Gundo - Visualize your undo tree(需要Python)或undotree.vim - Display your undo history in a graph(不)进行导航并更容易地调用树。

+0

就我而言,我以5秒的间隔完成了3次粘贴操作。显然,这不会创建离散的历史 – sehe