恢复Vim备份
Vim的文件备份系统刚刚保存了我众所周知的@$$,但我有一个问题 我让vim将备份保存到恢复Vim备份,vim,backup,restore,Vim,Backup,Restore,Vim的文件备份系统刚刚保存了我众所周知的@$$,但我有一个问题 我让vim将备份保存到~/.vim/backups 为了恢复它们,我转到目录并(按日期排序)将所需文件复制回项目文件夹中的必要目录。很简单,只有5个文件。然而,我感到惊讶的是,没有明显的方法可以找到每个文件来自哪个目录。我尝试使用vim-r path/to/file,但似乎使用的是交换文件,而不是备份文件。因为在我的例子中,vim没有崩溃(我只是错误地重写了文件),所以这些文件没有交换 因此,主要问题是:恢复vim备份文件的最佳方
~/.vim/backups
为了恢复它们,我转到目录并(按日期排序)将所需文件复制回项目文件夹中的必要目录。很简单,只有5个文件。然而,我感到惊讶的是,没有明显的方法可以找到每个文件来自哪个目录。我尝试使用vim-r path/to/file
,但似乎使用的是交换文件,而不是备份文件。因为在我的例子中,vim没有崩溃(我只是错误地重写了文件),所以这些文件没有交换
因此,主要问题是:恢复vim备份文件的最佳方法是什么?
附带问题:当我有两个来自不同路径(例如
/path/one/file.html
和/path/two/file.html
)的同名文件时,.vim/backup/目录会发生什么情况?据我所知,vim根本不保存有关文件原始位置的任何信息
保存两个同名文件的备份可能会覆盖现有备份或使用不同的名称,具体取决于.vimrc中的设置。选项“备份”将覆盖现有备份文件,但“写备份”将为新备份重新命名,以避免覆盖
查看Vim的文档了解更多信息-:帮助备份要回答有关恢复的问题,Vim对备份一无所知。它的备份系统非常简单——写一个文件。要恢复,您必须手动执行 但是,您可以向备份中添加更多信息,以使恢复更容易 理想情况下,
backupdir
将允许拖尾/
,以强制其扩展文件路径,并将/
替换为%
。e、 g./tmp/foo.rb
将成为备份文件'tmp%foo.rb'
请参阅:help undodir
和:help directory
,以了解撤销
和*。swp
目录设置,这些设置采用/
但我们可以假装
" Prevent backups from overwriting each other. The naming is weird,
" since I'm using the 'backupext' variable to append the path.
" So the file '/home/docwhat/.vimrc' becomes '.vimrc%home%docwhat~'
au BufWritePre * let &backupext ='@'.substitute(substitute(substitute(expand('%:p:h'), '/', '%', 'g'), '\', '%', 'g'), ':', '', 'g').'~'
备份文件先读取文件名,然后读取目录,但它确实可以工作,并且应该具有足够的唯一性
示例:.vimrc%home%docwhat~
作为/home/docwhat/.vimrc
如果您需要逐分钟备份,因此减少了工作量,则可以在文件名上附加时间戳:
au BufWritePre * let &backupext = substitute(expand('%:p:h'), '/', '%', 'g') . '%' . strftime('%FT%T') . '~'
但是我建议您设置一个cron作业来定期清理这个目录。如果你编辑尽可能多的我的文件,这个文件会很快变得巨大
或者,您可以做一些聪明的事情,在编写之前更改backupdir
(使用BufWritePre
hook),但vim的这种聪明程度(目前)是我无法理解的
再见 事实上,这个次要问题似乎又来了。其中一个备份确实覆盖了另一个备份,我没有/path/two/file.html的任何记录。。。叹气。您可以通过读取文件~/.viminfo来查看一些编辑历史记录。