vim - 撤消所有缓冲区/窗口/打开文件等

时间:2012-05-23 11:23:39

标签: vim

在vim中,我想按时间顺序通过所有缓冲区中的所有更改来撤消。

例如,在vim会话中,我通常会打开许多​​选项卡,每个选项卡中都有许多窗口。使用u撤消(或g; / g,移动更改列表),vim会移动对 缓冲区所做的更改,即使最近有更新在其他缓冲区中进行了更改(我承认,这是我大多数时候都想要的。)

但是有没有办法按时间顺序回溯所有缓冲区的变化? (我想vim会从tab到tab跳转,这没关系。)

为什么这会有用? ......大多数情况下,当我在休息后恢复编码时,我可以提醒自己“我在哪里”,即我上次所做的所有改变。

(使用macvim 7.3)

更新:关于使用git / mercurial的回复可以获得好点(特别感谢git stash),但我仍然觉得这个功能非常有用,因为它通过语法着色按顺序逐步完成最近的更改在vim等。)

2 个答案:

答案 0 :(得分:4)

undolist

可以走很长的路
:bufdo echo expand('%') | undolist

结果,例如对于简单的编辑会话:

SpiritParser.cpp
number changes  when               saved
     1       1  13:57:51
SpiritParser.h
number changes  when               saved
     1       1  13:57:55

要对所有可见窗口执行此操作,请执行windo而不是bufdo。如果您有多个标签,请进行

:tabdo windo echo expand('%') | undolist

答案 1 :(得分:1)

你应该使用某种版本控制:Git,Mercurial,Subversion,等等......

每天早上,您可以阅读项目的日志并查看以前的提交以查看更改的内容,您可以创建分支以处理特定功能,编写干净且描述性的提交消息,以便更好地了解您之前的更改等。< / p>

或者您可以执行:windo u之类的操作。但这听起来很混乱。