在 vim 中,我想按时间顺序撤消所有缓冲区中的所有更改。
例如,在 vim session 中,我通常打开许多选项卡,每个选项卡中有许多窗口。使用 u
要撤消(或 g;
/g,
以在更改列表中移动),vim 会移动对该缓冲区所做的更改,即使其他缓冲区中有最近所做的更改。 (我承认,这是我大部分时间想要的。)
但是有没有办法按时间顺序返回所有缓冲区的变化? (我想 vim 会从一个选项卡跳到另一个选项卡,这没问题。)
为什么这会有用? ...主要是当我休息后继续编码时,我可以提醒自己“我在做什么”,即我上次所做的所有更改。
(使用 macvim 7.3)
更新:关于使用 git/mercurial 的回答是很好的点(特别感谢 git stash
),但我仍然觉得这个功能很有用,因为它让我按顺序回到最近的更改,语法着色,在 vim 内等)
最佳答案
您可以通过 undolist
取得很大进展:
:bufdo echo expand('%') | undolist
结果,例如对于简单的编辑 session :
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
关于vim - 撤消所有缓冲区/窗口/打开的文件等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10718923/