Android拓展系列(8)--Vim插件便捷管理(使用git submodule和pathogen)

十度 Android 2015年12月01日 收藏

    对于一个vimer来说,vim插件的管理其实是一个问题。
    对于一个喜欢重装系统的vimer来说,vim插件的管理其实是一个很重要的问题。
    对于一个喜欢又喜欢尝鲜最新插件又喜欢重装系统的vimer来说,vim插件的管理其实是一个更重要的问题。
    所以,我想说的是,vim插件的管理,对于不同程度的人群有不同的重要性,我相信这真的是vimer要解决的一个重要的问题。

1. vim插件的管理的几个问题
    vim插件的管理到底是解决什么问题?
    (1). 记录存档;
        把你的个性化设置(.vimrc),使用的哪些插件,或者一些操作,或者自己整理的文档,能够有所记录存档,能够随时查阅。
    (2). 云备份;
        云备份相对于本地保存更安全,同时通过网络,我们能更方便在任何时间任何地点获取的到。
        重装系统,格式化,以后通通不怕忘记备份了。
    (3). 能更新;
        以最简单的方式,就能使用最新的插件,第一时间享受最新的改进。
    (4). 简单方便;
        只需要最简单的几部操作,就能在任何时间在任何电脑克隆出你电脑上一模一样的vim运行环境。
        绝对简单,绝对方便,这也是我们要追求的特性。

2. 使用git submodule和pathogen
    有一个解决方案,能解决上面提出的几个问题。
    插件的管理,有一个著名的vim插件pathogen能够实现方便的管理。
    备份记录,则可以使用git版本控制工具在github上实现。
    结合git中的submodule特性,我们能够实现插件的插件化,保持他们的独立性,进而实现插件的随时更新。

3. git和github
    这一步其实是本文的一个基础条件,也感谢github提供了这么一个好的大环境。
    git提供了版本管理,以便以后随时更新和修改。
    github相当于提供了云端的备份,随时随地都可以恢复,最主要的是对git的完美支持。
    结合git和github能够对本地插件和整个环境纳入一个良好的管理体系,简单强大,安全可靠。

4. 插件管理pathogen插件
    这个插件带来的好处就是,每个插件能够独立的放到bundle下对应的目录下,所有的插件很独立,很干净。
    pathogen的源码地址:https://github.com/tpope/vim-pathogen
    在上面详细讲述了pathogen的使用方法,我不累述。
    只是说明一下,这个插件式需要修改.vimrc的,所以后续我们需要提供一个.vimrc的更新方法,后面会说这个问题。

5. 使用git submodule
    git submodule实现把插件作为第三方版本库嵌入我们的版本库,而我们只需要付出管理一个版本库的精力。
    因为插件基本上都是别人提供了,而且现在vim scripts都迁移到了github上,我们只需要从github上clone下来就可以了。
    但是每个插件都是一个独立的版本库,如果简单的分开克隆,独立管理会造成本地也会有很多版本库。
    使用git submodule只需要建立一个版本库,而把这些插件的版本库只是当做这个版本库的子模块,这样既能实现管理的简单,有能分别进行独立的升级。
    git submodule的使用方法:

// 增加一个模块
git submodule add <url> <local path>
// 更新模块
git submodule init
git submodule update

6. 布局
    结合上述所说,我们给这个工程取名叫openvims为例,它的布局,也就是目录结构如下:

    前面提到的.vimrc的管理问题在这里通过Install.sh也解决了。

7. 验证
    我已经在github上搭建了这个工程,取名openvims,地址:
    https://github.com/openproject/openvims
    验证步骤如下:

// 首先,我们要做的就是clone成本地.vim目录
git clone https://github.com/openproject/openvims.git ~/.vim
// 其次, 更新各vim插件模块
git submodule init
git submodule update
// 最后,使用.vimrc
cd ~/.vim
./Install.sh

    两三步搞定了,现在你可以享受openvims带来的便利了。
    打开vim试试看,是不是有效果了。

8. 修改和升级
    修改文件,使用git常规方法提交,上传到服务器即可。
    如果要增加新的vim插件,使用如下命令:

// 以nerdtree为例,在.vim目录下执行
git submodule add https://github.com/scrooloose/nerdcommenter.git bundle/nerdcommenter

    如果更新插件的话,update即可

// 在.vim目录下
git submodule update

    如果删除目录的话,删除bundle下的插件的文件夹,然后手动修改.gitmodule,只能这样了,最后记得提交到服务器上去。

9.  几个插件说明
    (1).supertab
        这个插件是我的最爱,easy完成你的自动完成。
        装vim插件,我是第一个装这个插件(不算vim插件管理插件pathogen)
    (2).file-line
        很方便的一个小插件,让你直接打开文件并跳到某一行,你唯一要做的就是在文件参数后附加":number",number表示你的行数。
        应用场景:


        比如在某工程下使用jgrep查找Browser字符串,结果如下
        在316行有一个结果,安装此插件后,我们可以直接使用如下命令跳到316行:

vim ./src/com/android/mms/ui/MessageListItem.java:316

    (3).nerdtree
        树形工程浏览视图,很好用,效果如下图,这个插件的官方说明文档很详细,这里就不多说。


        针对工程用nerdtree打开的问题,我有个小小的经验之谈。
        (3.1).你可以使用vim +NERDTree就能快速以nerdtree打开当前目录
        (3.2).使用别名,快速在任何地方打开某一工程,举例:在.bashrc中定义alias openpro='cd /workspace/project; vim +NERDTree'后,在任何目录执行openpro就能打开workspace目录下的project这个工程了。
        (3.3).配置快捷键,比如F2等。
    (4).nerdcommenter
        快速注释的插件,习惯使用之后还真离不开这个插件了,"\" + "c" + " ",现在用的挺顺手的了。
    (5).tabular
        对齐插件,很方便。
        行选择,然后:Tabularize/=,则把所选行的=全部对齐。在写代码定义变量的时候还是经常用到的。
        不多说,截个图看看效果吧:


    (6).space
        使用空格重复插件,很聪明的一个插件,比.要强大,.只是重复上一个edit motion。
        小插件,用过之后相信你会喜欢的。
    后续有什么好用的插件,我会补充添加,也欢迎大家回复推荐一些好用的vim插件。

10. 小结
    vim的插件提供了强大的扩展,但是如同工具的Setting配置文件(不过更复杂一些),每类人总是有自定义的方案,并且希望把这个自定义的配置方案能够保存。
    对于vim插件,因为多而繁,又最好能够升级,本文提供了一个简单的方案,希望能帮助到一些vimer吧。