由于我在 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') )
|
参考页面: