在vim中,我想按时间顺序通过所有缓冲区中的所有更改来撤消。
例如,在vim会话中,我通常会打开许多选项卡,每个选项卡中都有许多窗口。使用u
撤消(或g;
/ g,
移动更改列表),vim会移动对 缓冲区所做的更改,即使最近有更新在其他缓冲区中进行了更改(我承认,这是我大多数时候都想要的。)
但是有没有办法按时间顺序回溯所有缓冲区的变化? (我想vim会从tab到tab跳转,这没关系。)
为什么这会有用? ......大多数情况下,当我在休息后恢复编码时,我可以提醒自己“我在哪里”,即我上次所做的所有改变。
(使用macvim 7.3)
更新:关于使用git / mercurial的回复可以获得好点(特别感谢git stash
),但我仍然觉得这个功能非常有用,因为它通过语法着色按顺序逐步完成最近的更改在vim等。)
答案 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
之类的操作。但这听起来很混乱。