由于在Windows下使用gVim,没装git,所以使用VimL来写了一个一键更新插件的脚本,避免以后手动费时下载。
其原理很简单了,只是用curl获取当前git提交的commit的md5跟本地做对比,之后进行是否下载操作,当然如果需要使用的话要满足以下要求:
- 使用pathogen,插件集中在bundle目录下。
- 不想装git,且有MinGW环境(主要是curl和unzip)。
虽然没有太多的技术含量,但主要目的还是简单学习下VimL,脚本如下:
let s:bundles = readfile('bundle.txt')
let s:bundles_git = []
let s:unzip = 'E:\Tools\widget\uniextract\bin\unzip.exe'
for i in s:bundles
let s:arr = split(i, '|')
let s:plug = split(s:arr[0], '/')[-1]
let s:md5 = matchstr(system('curl -sk ' . s:arr[0]), '\cclipboard-text=\([''"]\)\zs.\{-}\ze\1')
if s:arr[1] !=? s:md5
call system('curl -skLO ' . s:arr[0] . '/archive/master.zip')
call system(s:unzip . ' -q master.zip')
call delete('bundle/' . s:plug)
call rename(s:plug . '-master', 'bundle/' . s:plug)
endif
call insert(s:bundles_git, s:arr[0] .'|' . s:md5)
endfor
call delete('master.zip')
call writefile(s:bundles_git, 'bundle.txt')
bundle.txt文件内容如:
https://github.com/mattn/emmet-vim||
然后放置到vimfiles目录下,使用source %执行,也可以使用Unite插件集成到menu下,如下图:
部分配置如下:
let g:unite_source_menu_menus.custom.candidates = {
\ 'Update Plugin' : 'cd $VIM\vimfiles | source $VIM\vimfiles\Update.vim',
\ }
这样就可以实现Vim插件的一键更新,如果你在使用中遇到任何问题请留言反馈,我会及时更正。
转载请注明: 本文《VimL:gVim插件更新脚本》来源于bstaint的博客
没有评论:
发表评论