Vim的包管理有很多选择,有Vundle、NeoBundle、Vim-plugin、Pathogen、Dein、VAM等,像我之前一直使用的是Vundle。这段时间把Vim升级到了Vim 8+,发现了Vim 8已经有内置的包管理功能,于是体验了一把,如下就是使用方法。
一、package概念
不同于Vundle或者vim-plugin中的plugin
, vim 8内置包管理器引入了一个新的package
的概念来组织管理包。一个package
是若干plugin
的集合,一个package
里的plugin
之间可以是互相依赖的。package
中有两个目录:启动时加载目录
、启动后加载目录
,你可以将希望vim启动时自动加载的plugin
放置到启动时加载目录
中,启动后加载plugin
放置到启动后加载目录
。
二、如何使用
首先毫无疑问,你的vim版本要升级到8.0以上~
-
创建放置所有
package
的根目录mkdir -p ~/.vim/pack
-
创建一个新的
package
,用于存放vim插件mkdir -p ~/.vim/pack/mypackage
-
分别在
mypackage
中创建目录start
和opt
mkdir -p ~/.vim/pack/mypackage/start mkdir -p ~/.vim/pack/mypackage/opt
-
将想vim启动时自动加载的插件丢到
~/.vim/pack/mypackage/start
,而不想启动时加载的插件丢到~/.vim/pack/mypackage/opt
中,需要用到的时候,执行:packadd $pluginname
就可以了 -
重启vim,
~/.vim/pack/mypackage/start
中插件即可自动加载了
三、插件管理
如何方便地添加、升级、同步vim插件呢?我们用到的vim插件很多都是在github上以repostory形式存在的,可以配合使用git的submodule功能,来从github上添加、更新第三方vim插件。
-
把
~/.vim
做成一个git仓库,然后初始化submodulecd ~/.vim git init git submodule init
-
添加第三方插件,比如ale
cd ~/.vim git submoudle add git@github.com:dense-analysis/ale.git pack/mypackage/start/ale
-
升级所有第三方插件
git submodule update --recursive --remote
-
同步vim插件到另一台机器,只需要在另一台机器上把vim插件仓库clone下来到
.vim
目录即可cd ~/.vim git clone --recursive git@github.com:{your_github_name}/{your_repostoy_name}.git