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