2013-10-10 59 views
2

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

回答

2

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

我在终端Vim,但我不认为这应该在这里有所作为。我在一个终端选项卡中用Vim打开了一个测试文件,进入一个新选项卡并对其进行编辑,保存该文件,切换回第一个选项卡,运行:e以重新加载文件,然后将其切换回最后一个版本在u的标签中打开。

+0

还值得注意的是,您可以忽略磁盘上的更改,然后执行':DiffOrig'来查看当前缓冲区与磁盘上的不同之处。您需要将':DiffOrig'命令添加到'〜/ .vimrc'文件中。请参阅':h:DiffOrig'获取更多帮助。 –

+0

好主意,但我已经尝试过,并没有奏效。这可能是因为你的测试文件很小,所以它们都适用于撤消缓冲区,而我的文件有点大,并不适合缓冲区。 – Stephen

1

我有这样的事情是我的.vimrc

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

我可以用这样的病例,你不小心覆盖本地更改帮助你,你想找到你的旧版本的文件。确保首先创建目录以避免启动时出现错误。

+0

我对backupdir有一个类似的东西,但不知道有没有undodir。但我不认为这会有所帮助 - 我认为增加'重新加载'可能是唯一能帮助我的东西。 – Stephen

3

如果您的缓冲区的行数少于'undoreload'设置,则其内容将在重新加载之前存储在无动物中。这意味着,一个简单的ug-应该让你的缓冲区内容回来。像我的历史插件或着名的Gundo或undotree插件的插件也可能会有所帮助。

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