Vim 用了很多年,一开始我是把所有插件直接扔到 .vim 目录下。时间长了以后,.vim 下面有好多零碎的文件,分不清哪个属于哪个插件,删除和升级插件都很困难。相信很多 Vimer 也遇到了这个问题。
Pathogen 是一款拯救各个 Vimer 于水火之中的 Vim 插件,它一改原先 Vim 只能把插件全部扔到 .vim 目录下的操作方式,使得各个插件可以以一个独立的文件夹存在于 .vim/bundle 目录中,添加和删除插件都变的非常清爽。再加上 git 强大的子模块管理功能,可以实现方便的插件安装和自动升级。
在 Pathogen 之前,安装插件就是把文件都丢到 .vim 目录下,文件都混在一起,非常不好管理:
.vim
├── doc
├── plugin
│ ├── vim-scratch.vim
│ └── vim-surround.vim
├── ftplugin
└── autoload
Pathogen 可以理解成一个插件的加载器,通过 Pathogen,可以将不同的插件放到不同的目录里,比如:
.vim
└──bundle
├── vim-scratch
│ └── plugin
│ └── vim-scratch.vim
└── vim-surround
├── doc
└── plugin
└──vim-surround.vim
这样,各个插件之间的文件都独立于自己的目录,删除一个插件,只要直接删除这个插件的目录就行了。
Pathogen 的使用非常简单,在此不在赘述,参见文章 更好的管理VIM插件(续) pathogen
Pathogen 相当于一个插件的加载器,只提供最简单的插件加载功能,没有提供任何插件的安装、删除、更新这些管理功能。估计作者也是本着 Unix 哲学(程序应该只关注一个目标,并尽可能把它做好)思想,将来也不会加入任何管理功能。
但是如果要打造一套完善的 Vim 插件方案,一个靠谱的插件自动化管理系统是必不可少的。就像 Chrome 的插件系统一样,插件可以:
因此就有了 Vundle 这类工具,通过一系列的脚本,来实现这些功能。
我自己比较喜欢的方案是 Git + Pathogen,本质上和 Vundle 没有区别(Git 就是各种牛逼的脚本组合起来的),但是有着很多让我着迷的优点:
首先,备份你原先的 .vim 配置,并创建一个新的 .vim 目录,以及放置插件的 bundle 目录:
1 2 3 4 5 |
|
然后把 .vim 目录变成一个 Git 仓库。做这一步非常简单,切换到 .vim 目录下,执行git init
命令,git 会创建一个 .git 目录:
1 2 3 4 5 6 7 8 |
|
至此,准备工作就完成。以下的命令如果没有特别说明,都是在 .vim 这个目录中敲入的。
安装插件的命令是:
1
|
|
Pathogen 将会是我们通过 Git 安装的第一个插件:
1 2 3 4 5 6 7 |
|
通常来讲,一个插件下载完之后就已经可以使用了,但是对于 Pathogen 这个”插件中的插件“来说,还要多一,创建一个非常简单的 .vimrc 文件,加载 pathogen
1 2 |
|
方法跟安装 Pathogen 是一样的,在 .vim 目录下执行:
1
|
|
以 NERDTree 为例,仓库地址是git://github.com/scrooloose/nerdtree.git
:
1
|
|
单独升级插件,只要先进入插件目录,然后执行:
1
|
|
通过git submodule foreach
来可以一次性升级全部插件:
1
|
|
删除一个插件稍微繁琐了一点(相比较添加和升级),需要两条命令:
1 2 |
|
如果你是一直按照我的教程做到这里,这时你可以通过git status
查看一下 .vim 这个 Git 仓库的状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
可以看到 Git 的暂存区中还没有加入 .vimrc(如果你不懂什么是 Git 暂存区,没关系,按照教程继续往下走,不过最好去看一下 Pro Git 这本书),将 .vimrc 加入暂存,并提交:
1 2 3 4 5 6 7 8 |
|
在做下一步之前,你需要在 github 上开一个远程仓库(这一步就不给出具体教程了,非常简单,在 Github 上操作)。然后把本地 Git 仓库推送到 Github 上。例如,我的 vim 仓库地址是[email protected]:perfectworks/vim.git
:
1 2 |
|
然后去 Github 上看看,可以发现,所有通过 Git 加入的 Vim 插件都是以一个链接直接链到插件的 Github 仓库,看起来非常整齐漂亮.
来源:http://lostjs.com/2012/02/04/use-pathogen-and-git-to-manage-vimfiles/