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


        对于一个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吧。

  • 相关阅读:
    Opennebula4.2管理端和节点SSH模式的安装配置
    shell操作mysql之增删改查
    Linux常用服务部署与优化之NFS篇
    Linux常用服务部署与优化之Samba篇
    sql编程小结
    mysql5.7.11编译安装以及修改root密码小结
    基于centOS6.7搭建LAMP(httpd-2.4.18+mysql-5.5.47+php-5.6.16)环境
    php实现文件上传下载功能小结
    zabbix搭建
    mysql主从复制
  • 原文地址:https://www.cnblogs.com/qianxudetianxia/p/2817925.html
Copyright © 2020-2023  润新知