在之前的一篇文章中我推荐了几款vim比较实用的插件,其中第一款就是pathogen,是的,虽然只有短短两百来行的代码,但就像我给它的评分一样:Life Changing。

为了解决文件混乱的问题vim搞出了vba这种格式,想法很好,但实际应用中效果却不能尽如人意。因为并非所有的插件发布者都会把插件打包成vba格式,很多都只是简单的压缩成zip或者tar.gz之类的压缩包,假如插件只有一个vim文件的话连压缩都不用了……

而使用pathogen的话,则每个插件都会拥有一个自己的文件夹,这样要删除某个插件直接找到这个插件所在的文件夹,然后删掉它就行了。

好吧,前面说了一大堆废话来凑字数,就是为了引出下面的正题。

现在很多插件都只发布vba包,之前我不知道该怎么解压,用了一种很二的方法:先按照正常的方法安装这个vba包,然后在bundle目录里新建一个目录,再把刚才安装的那些文件移进去……我忘了有伟大的”:h”。……

用”:h vba”可以看到相关帮助,其实只需要几步就能安装:

1.先创建相应的文件夹。其中的plugin_name是实际的插件名

mkdir ~/.vim/bundle/plugin_name

2.用vim打开需要安装的vba包。

vim someplugin.vba

3.在vim中执行下面的代码:

:UseVimball ~/.vim/bundle/plugin_name

作为一个蛋疼得必须要治的人,我写了小插件,貌似会更方便一点:

"--------------------------------------------------
" pathogen_install_vba.vim
" Author:       jiazhoulvke
" Email:        jiazhoulvke [AT] gmail.com
" Blog:         http://jiazhoulvke.com
" Version:      0.1
"--------------------------------------------------

if &cp; || exists("g:loaded_pathogen_install_vba")
    finish
endif
let g:loaded_pathogen_install_vba="v0.1"

command! PathogenInstallVBA :call Pathogen_Install_VBA()

function! Pathogen_Install_VBA()
    let jzlk_extname=expand("%:e")
    if jzlk_extname!="vba"
        echo '这个文件不是vba安装包哦。'
    else
        let vba_dir_name=input("插件文件夹名: ")
        if has("win32")
            let vba_dir_path=$VIM . "\\vimfiles\\bundle\\" . vba_dir_name
            call system("md " . vba_dir_path)
        else
            let vba_dir_path="~/.vim/bundle/" . vba_dir_name
            call system("mkdir ". vba_dir_path)
        endif
        execute 'UseVimball ' . vba_dir_path
    endif
endfunction

安装这个插件,然后以后碰到vba格式的插件,载入后vim里输入:PathogenInstallVBA,会提示输入文件夹名,输入后回车,OK。