我有一个用gvim打开的文件,它问我是否要重新加载当前缓冲区,因为它检测到该文件的较新版本。我接受了,但事实证明新的缓冲区不是我想要的。有没有办法恢复旧的缓冲区?不幸的是,磁盘上的文件(以及我用vim -r
查看的swp文件)包含新的缓冲区。
答案 0 :(得分:4)
如果您的缓冲区的行数少于'undoreload'
设置,则其内容将在重新加载之前存储在undotree中。这意味着,简单的u
或g-
应该可以恢复缓冲区内容。像我的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
我可以帮助处理这样的情况,如果您不小心覆盖了本地更改,并且您希望找到旧版本的文件。确保首先创建目录以避免启动时出错。