恢复Vim备份

时间:2011-07-14 18:42:23

标签: vim backup restore

Vim的文件备份系统刚刚保存了我的谚语@ $$,但我有一个问题。

我将vim保存备份到~/.vim/backups

要恢复它们,我去了目录并按日期排序,将我需要的文件复制回项目文件夹中的必要目录。很容易,只有5个文件。但是,我很惊讶没有明显的方法可以找到每个文件来自哪个目录。我尝试使用vim -r path/to/file,但似乎使用交换而不是备份文件。因为在我的情况下,vim没有崩溃(我只是错误地覆盖了文件),没有交换这些文件。

所以主要问题是:恢复vim 备份文件的最佳方法是什么?

附带问题:当我有来自不同路径的两个同名文件(例如/path/one/file.html/path/two/file.html)时,.vim / backup /目录会发生什么?

2 个答案:

答案 0 :(得分:8)

要回答有关恢复的问题,Vim对备份一无所知。它的备份系统非常简单 - 写一个文件。要恢复,您必须手动执行。

但是,您可以向备份中添加更多信息,以便更容易恢复。

理想情况下,backupdir会尊重尾随//,强制它展开文件的路径并将/替换为%。例如/tmp/foo.rb将成为备份文件`tmp%foo.rb'。

请参阅:help undodir:help directory了解undo*.swp目录设置。{/ 1}}。

但我们可以假装这个!

//

备份文件读取filename-then-directory但它确实有效并且应该足够独特。

示例:" 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

但是我建议你定期设置一个cron作业来清理这个目录。如果您编辑我的文件数量很多,这个文件会很快变大。

或者,您可以做一些聪明的事情并在写作之前更改au BufWritePre * let &backupext = substitute(expand('%:p:h'), '/', '%', 'g') . '%' . strftime('%FT%T') . '~' (使用backupdir挂钩),但vim的那种聪明程度超出了我(目前)。

侨!

答案 1 :(得分:2)

据我所知,Vim根本没有保存有关文件原始位置的任何信息。

保存两个同名文件的备份可以覆盖现有备份,也可以使用其他名称,具体取决于.vimrc中设置的内容。选项'backup'将覆盖现有备份文件,但'writebackup'将重新命名新备份以避免覆盖。

查看Vim的文档了解更多信息 - :help backup