Vim8引入了内置的packages软件包功能。Vim软件包将创建一个或多个目录,用于安装和更新插件。和普通插件管理器相比,它主要有以下优点:
任何位于~/.vim/pack之下的目录,都将被视为软件包。一个软件包,可以将插件存储在start或opt子目录中:
其中,*
可以为任意名称。
例如使用以下命令,创建以“plugins”命名的目录结构:
mkdir -p ~/.vim/pack/plugins/start
mkdir -p ~/.vim/pack/plugins/opt
可以clone或者使用子模块(Submodules)功能,将git库同步到本地软件包目录。这也意味着,您可以在Git库里集中管理.vimrc配置文件和.vim目录结构,并同步到不同的计算机里。
Git子模块允许你将一个Git仓库作为另一个Git仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
为pack目录创建git库:
cd ~/.vim/pack
git init
git add *
git commit -m "Initial commit"
git submodule init
git remote add origin https://github.com/username/reponame.git
git push -u origin master
目录结构如下,之后安装的插件将存放在~/.vim/pack子目录中:
软件包支持源码托管在GitHub的插件,你可以在github.com/vim-scripts/上找到vim官网里所有插件的镜像,也可以直接引用github.com的网址。
如果希望安装新插件,可以执行以下命令安装指定的插件:
$ git submodule add https://github.com/chrisbra/unicode.vim plugins/start/unicode
然后使用以下命令,来提交变更:
$ git commit -m "Added submodules"
$ git push origin master
使用以下命令,可以安装用于演示Vim8.2新功能的killersheep小游戏。
$ git submodule add https://github.com/vim/killersheep plugins/opt/killersheep
$ git commit -m "Added killersheep"
$ git push origin master
使用以下命令,手动载入插件:
:packadd killersheep
使用以下命令,启动游戏:
:Kill
如果希望卸载插件,请先执行以下命令来移除git submodule:
git submodule deinit -f -- ~/.vim/pack/plugins/opt/killersheep
然后使用以下命令,删除插件文件目录:
rm -rf ~/.vim/pack/plugins/opt/killersheep
最后使用以下命令,从远处Git库中删除插件:
git rm -rf ~/.vim/pack/plugins/opt/
使用以下命令,可以更新指定插件'unicode':
$ cd ~/.vim/pack/plugins/start/unicode
$ git submodule update --remote --merge
使用以下命令,可以批量更新所有已安装的插件:
$ cd ~/.vim/pack
$ git submodule foreach git pull origin master
请注意,如果有任何插件更新,请使用以下命令提交更新至Git repository:
$ cd ~/.vim/pack
$ git commit -am "Updated plugins."
使用以下命令,可以查看packages的帮助信息:
:help packages
请注意,对于Vim内置的软件包功能:
:helptags ~/.vim/pack/plugins/start/reponame
:helptags ALL
如果您同时使用多台电脑,那么结合packages和git功能即可以实现插件配置的同步。当然,这过程中牵扯了诸多手工操作和git知识,平衡取舍还请各位自行斟酌。
$ git clone https://github.com/username/reponame.git ~/.vim
$ cd ~/.vim
$ git submodule update --init
$ git commit -am "Updated plugins."
$ git submodule foreach git pull origin master
$ git add .
$ git commit -m "update submodules"
:packadd | 安装插件 |