无论你是手动安装还是通过包管理器安装,插件都可以帮助你在工作流中打造一个完美的Vim。
虽然Vim是快速且高效的,但在默认情况下,它仅仅只是一个文本编辑器。至少,这就是没有插件的情况Vim应当具备的样子,插件构建在Vim之上,并添加额外的功能,使Vim不仅仅是一个输入文本的窗口。有了合适的插件组合,你可以控制你的生活,形成你自己独特的Vim体验。你可以自定义你的主题,你可以添加语法高亮,代码linting,版本跟踪器等等。
怎么安装Vim插件
Vim可以通过插件进行扩展,但很长一段时间以来,并没有官方的安装方式去安装这些插件。从Vim8开始,有一个关于插件如何安装和加载的结构。你可能会在网上或项目自述文件中遇到旧的说明,但只要你运行Vim8或更高版本,你应该根据Vim的官方插件安装方法安装或使用Vim包管理器。你可以使用包管理器,无论你运行的是什么版本(包括比8.x更老的版本),这使得安装过程比你自己维护更新更容易。
手动和自动安装方法都值得了解,所以请继续阅读以了解这两种方法。
手动安装插件(Vim8及以上版本)
所谓的“Vim包”是一个包含一个或多个插件的目录。默认情况下,你的Vim设置包含在~/.vim中,这是Vim在启动时寻找插件的地方。(下面的示例使用了通用名称vendor来表示插件是从其它地方获得的。)
当你启动Vim时,它首先处理你的.vimrc文件,然后扫描~/.vim中的所有目录,查找包含在pack/*/start中的插件。
默认情况下,你的~/.vim目录(如果你有的话)中没有这样的文件结构,所以设置为:
$mkdir-p~/.vim/pack/vendor/start
现在,你可以将Vim插件放在~/.vim/pack/vendor/start中,它们会在你启动Vim时自动加载。
例如,尝试安装一下NERDTree,这是一个基于文本的Vim文件管理器。首先,使用Git克隆NERDTree存储库的快照:
$gitclone--depth1\https://github.com/preservim/nerdtree.git\~/.vim/pack/vendor/start/nerdtree
启动Vim或者gvim,然后键入如下命令:
:NERDTree
Vim窗口左侧将打开一个文件树。
NERDTreeplugin
如果你不想让一个插件每次启动Vim时都自动加载,你可以在~/.vim/pack/vendor中创建opt文件夹:
$mkdir~/.vim/pack/vendor/opt
任何安装到opt的插件都可被Vim使用,但是只有当你使用packadd命令将它们添加到一个会话中时,它们才会被加载到内存中。例如,一个虚构的叫foo的插件:
:packaddfoo
Vim官方建议每个插件项目在~/.Vim/pack中创建自己的目录。例如,如果你要安装NERDTree插件和假想的foo插件,你需要创建这样的目录结构:
$mkdir-p~/.vim/pack/NERDTree/start/$gitclone--depth1\https://github.com/preservim/nerdtree.git\~/.vim/pack/NERDTree/start/NERDTree$mkdir-p~/.vim/pack/foo/start/$gitclone--depth1\https://notabug.org/foo/foo.git\~/.vim/pack/foo/start/foo
这样做是否方便取决于你。
使用Vim包管理器(任何Vim版本)
自从Vim8以后,包管理器变得不那么有用了,但是一些用户仍然喜欢它们,因为它们能够自动更新一些插件。有几个包管理器可供选择,并且它们各不相同,但是vim-plug有一些很棒的特性和最好的文档,这使我们很容易开始并在以后深入研究。
使用vim-plug安装插件
安装vim-plug,以便它在启动时自动加载:
$curl-fLo~/.vim/autoload/plug.vim--create-dirs\https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
创建一个~/.vimrc文件(如果你还没有这个文件),然后输入以下文本:
callplug#begin()Plug'preservim/NERDTree'callplug#end()
每次要安装插件时,都必须在plug#begin()和plug#end()之间输入插件的名称和位置(上面以NERDTree文件管理器为例)。如果你所需的插件未托管在GitHub上,你可以提供完整的URL,而不仅仅是GitHub的用户名和项目ID。你甚至可以在~/.vim目录之外“安装”本地插件。
最后,启动Vim并提示vim-plug安装~/.vimrc中列出的插件:
:PlugInstall
等待插件下载。
通过vim-plug更新插件
与手动安装过程相比,编辑~/.vimrc并使用命令来进行安装可能看起来并没有多省事,但是vim-plug的真正优势在更新。更新所有安装的插件,使用这个Vim命令:
:PlugUpdate
如果你不想更新所有的插件,你可以通过添加插件的名字来更新任何插件:
:PlugUpdateNERDTree
恢复插件
vim-plug的另一个优点是它的导出和恢复功能。Vim用户都知道,正是插件的缘故,通常每个用户使用Vim的工作方式都是独一无二的。一旦你安装和配置了正确的插件组合,你最不想要的局面就是再也找不到它们。
Vim-plug有这个命令来生成一个脚本来恢复所有当前的插件:
$gitclone--depth1\https://github.com/preservim/nerdtree.git\~/.vim/pack/vendor/start/nerdtree1
vim-plug还有许多其他的功能,所以请参考它的项目页面以获得完整的文档。