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

mje*_*sen 8 vim

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

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

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

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

(使用macvim 7.3)

更新:关于使用git/mercurial的回答是好点(特别感谢git stash),但是我仍然觉得这个功能非常有用,因为它通过最近的更改,按顺序,使用语法着色,在vim内部等等.

seh*_*ehe 5

你可以走很长的路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)