用vim撤消重新加载新缓冲区

用vim撤消重新加载新缓冲区,vim,Vim,我用gvim打开了一个文件,它问我是否要重新加载当前缓冲区,因为它检测到文件的更新版本。我接受了,但新的缓冲区不是我想要的。有没有办法恢复旧的缓冲区?不幸的是,磁盘上的文件(以及我用vim-r查看的swp文件)包含了新的缓冲区。尝试u(撤消;如果在重新加载后进行了更改,请重复,直到显示旧版本) 我在Vim终点站,但我不认为这会有什么不同。我在一个终端选项卡中用Vim打开了一个测试文件,转到一个新选项卡并在那里编辑它,保存它,切换回第一个选项卡,运行:e重新加载文件,然后将它切换回我在选项卡中用u

我用gvim打开了一个文件,它问我是否要重新加载当前缓冲区,因为它检测到文件的更新版本。我接受了,但新的缓冲区不是我想要的。有没有办法恢复旧的缓冲区?不幸的是,磁盘上的文件(以及我用
vim-r
查看的swp文件)包含了新的缓冲区。

尝试
u
(撤消;如果在重新加载后进行了更改,请重复,直到显示旧版本)


我在Vim终点站,但我不认为这会有什么不同。我在一个终端选项卡中用Vim打开了一个测试文件,转到一个新选项卡并在那里编辑它,保存它,切换回第一个选项卡,运行
:e
重新加载文件,然后将它切换回我在选项卡中用
u

打开的最后一个版本。我有一个类似的东西是我的.vimrc

" Backup stuff
set backupdir=~/.vim/backup
set directory=~/.vim/swap
set undodir=~/.vim/undo

如果您不小心覆盖了本地更改,并且希望找到文件的旧版本,我可以帮助您处理此类情况。确保首先创建目录以避免启动时出错。

如果缓冲区的行数少于
'undoreload'
设置,则其内容将在重新加载之前存储在undoreoad树中。这意味着,一个简单的
u
g-
应该可以取回缓冲区内容。像我的histwin插件或著名的Gundo或undotree插件这样的插件也会有所帮助


注意,这需要至少7.3版或更高版本的Vim才能工作。较旧的Vims在重新加载时没有存储缓冲区状态。

值得注意的是,您可以忽略磁盘上的更改,然后执行
:DiffOrig
,查看当前缓冲区与磁盘上缓冲区的差异。您需要将
:DiffOrig
命令添加到
~/.vimrc
文件中。有关更多帮助,请参见
:h:DiffOrig
。好主意,但我已经尝试过了,但没有成功。这可能是因为你的测试文件很小,所以它都可以放在undo缓冲区中,而我的文件有点大,不能放在缓冲区中。但我认为这不会有帮助——我认为增加
undoreload
可能是唯一对我有帮助的事情。