3

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

4

3 回答 3

5

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

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

于 2013-10-10T18:10:39.887 回答
2

Try u (undo; if you’ve made changes since reloading, repeat until the old version shows up).

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

于 2013-10-10T14:59:35.073 回答
1

我有这样的东西是我的 .vimrc

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

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

于 2013-10-10T16:59:04.983 回答