vim备份文件

由于我在 linux 的主目录自动挂载一个 tmp ,然后习惯有啥乱七八糟的文件都在这个 tmp 里面操作。 坏处之一是这里头的文件断电不保存(tmp 挂在内存上),而且有些需要保存的文件我也习惯往里头写。 于是在一次记笔记的时候,在 tmp 里写完忘记拷贝出去了,之后写作业才发现我笔记不见了。

第一个想到的是通过 vim 的 undo histroy 来复原文件,虽然的确可以看到一些文件内容, 但是是无法还原整个文件的。

查的时候发现我以前也查过这个问题,然后想起来我之前就遭遇过这样的损失, 为了避免重蹈覆辙给 vim 加了个备份功能。 于是翻了我备份的源码,去备份目录找,果然还在,虚惊一场。

附备份代码 (vim script) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function s:Make_Dir ()
if strlen (finddir (a:Path)) == 0
call mkdir (a:Path, "p")
endfunction Make_Dir
function s:To_Backup_File (Backup_Root, File_Path, File_Name)
let l:Backup_Path = a:Backup_Root . '/' . a:File_Path
if strlen (finddir (l:Backup_Path)) == 0
call mkdir (l:Backup_Path, "p")
endif
exe 'write!' . l:Backup_Path . '/' . a:File_Name
endfunction Backup_File
autocmd BufWritePre * :call s:To_Backup_File (
\ '/home/kewth/.vimbackup', " 备份的目录
\ expand('<afile>:p:h'),
\ expand('<afile>:p:t') )

参考页面: