启动时间20:11 完成时间22:26 这个vim脚本的作用是用于tex文件,当文件的最后一行含有"backup"字符,会把这个tex文件与相应的pdf文件复制到backup_path指定的位置.这个函数会在tex文件退出的时候作用.
tex文件在备份的文件名中加入日期加以区别,如果是同一分钟内的文件,只保留后一个.
pdf文件是不按时间区别的.
如果备份中有错发生,就用getchar() 函数,中断当前的工作,确认之后再关闭.
ps:当打开两个文件时,如果出错如没有目录,这时出错的显示会有两次,但是如果只打开一个文件,则只会显示一次,这个可能与函数的强制载入有关,但是具体的是什么还不知道.
"{{{自动备份,同步
"
autocmd BufWinleave *.tex if getline("$") =~ "backup" |call Backup()| endif
function! Backup()
"如意backup_path的最后一个字符是"/"
let backup_path = "...."
if isdirectory(backup_path) == 0
echo "no the path"
let stop = getchar()
return 1
endif
"当前文件的全名
let name = expand("%:p")
if filereadable(name) == 0
echo "this file has problem"
let stop = getchar()
return 2
endif
let date = strftime("%y%m%d%H%M")
let backup_name = backup_path . expand("%:t:r") ."_" . date .".". expand("%:e")
if filereadable(backup_name) == 1
if delete(backup_name) == 1
echo "there is the same file"
let stop = getchar()
return 3
endif
endif
"写入tex文件
exec "write " backup_name
"复制pdf文件
let pdfname=expand("%:p:r") .".pdf"
if filereadable(pdfname) != 1
echo "there is not the pdf file"
let stop = getchar()
return 4
endif
let targetpdf =backup_path . expand("%:t:r") . ".pdf"
let pdfcpinfo = system("cp " .pdfname ." " . targetpdf)
if pdfcpinfo != ''
echo "can't cp the pdf file"
let stop = getchar()
return 5
endif
return 0
endfunction