在vim中,我想按时间顺序撤消所有缓冲区中的所有更改.
例如,在vim会话中,我通常打开许多选项卡,每个选项卡中有许多窗口.使用u撤消(或g;/ g,移动更改列表),vim会移动对该缓冲区所做的更改,即使其他缓冲区中有更新的更改.(我承认,这是我大多数时候都想要的.)
但有没有办法按时间顺序回溯所有缓冲区的变化?(我想vim会从tab到tab跳转,这没关系.)
为什么这会有用?...大多数情况下,当我在休息后恢复编码时,我可以提醒自己"我在哪里",即我上次所做的所有改变.
(使用macvim 7.3)
更新:关于使用git/mercurial的回答是好点(特别感谢git stash),但是我仍然觉得这个功能非常有用,因为它通过最近的更改,按顺序,使用语法着色,在vim内部等等.
你可以走很长的路undolist:
:bufdo echo expand('%') | undolist
Run Code Online (Sandbox Code Playgroud)
例如,对于简单的编辑会话,结果如下:
SpiritParser.cpp
number changes when saved
1 1 13:57:51
SpiritParser.h
number changes when saved
1 1 13:57:55
Run Code Online (Sandbox Code Playgroud)
要对所有可见窗口执行此操作,请执行windo而不是bufdo. 如果您有多个选项卡,请这样做
:tabdo windo echo expand('%') | undolist
Run Code Online (Sandbox Code Playgroud)