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