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

时间:2013-10-10 14:25:34

标签: vim

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

3 个答案:

答案 0 :(得分:4)

如果您的缓冲区的行数少于'undoreload'设置,则其内容将在重新加载之前存储在undotree中。这意味着,简单的ug-应该可以恢复缓冲区内容。像我的histwin插件或着名的Gundo或undotree插件这样的插件也可以提供帮助。

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

我有类似的东西是我的.vimrc

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

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