如何使用Vundle管理LinuxVPS上的Vim插件
介绍
vim
文本编辑器是一个通用且极其强大的工具,用于处理纯文本、管理系统配置文件和创建代码。 虽然模态编辑的设计重点和编辑器本身优雅的语法受到用户的喜爱,但它的界面和功能有时缺乏一些用户想要的细节。
幸运的是,vim
还包含一个插件或脚本系统,可用于以各种方式扩展编辑器。 这些实现为简单的配置文件,根据其功能存储在 ~.vim
目录下的子目录中。 当您添加更多插件时,这些插件可能会变得非常混乱,并且很难将这些插件分开并有效地管理它们。
出于这个原因,已经为 vim
制作了很多插件管理器,以帮助简化此任务。 我们将在本指南中讨论的插件管理器,称为 vundle
,对于保持所有这些部分保持一致非常有用。
我们将探索如何在 Ubuntu 12.04 VPS 实例上使用 vundle
。 但是,大多数发行版应该能够使用这些指令,而无需做太多额外的工作。
安装实用软件
在我们开始探索如何使用 vundle
来管理 vim 插件之前,我们需要安装所有必要的组件。
首先,我们需要更新我们的本地包索引,然后我们需要确保已安装 vim
(这将很有用!)并且 git
可用于获取其他组件:
sudo apt-get update sudo apt-get install vim git
现在我们已经安装了 vim
和 git
(如果您正在阅读本文,您可能已经安装了 vim
),我们将在安装 之前稍作休息。 X184X] 谈论插件传统上如何工作以及 vundle
如何工作来管理它们。
Vundle 是如何工作的?
传统上,vim
是在每个用户的主目录中为每个用户配置的,由系统管理员配置回退默认值,最后由软件本身配置。 这些个人设置存储在一个名为 ~/.vimrc
的隐藏文件中。
添加功能的插件和附加配置文件通常被添加到 ~/.vim
的隐藏目录中。 在内部,大多数插件根据它们提供的功能被组织成子目录。 这些可能是 autoload
、plugin
、colors
等。
因此,如果您使用内置的 vim
插件系统,您的主目录可能看起来像这样:
ls -AR ~
/home/demouser: .bash_history .bash_logout .bashrc .profile .vim .vimrc /home/demouser/.vim: autoload bitmaps colors doc plugin syntax /home/demouser/.vim/autoload: plugin1.vim plugin2.vim /home/demouser/.vim/bitmaps: plugin1.png /home/demouser/.vim/colors: plugin2.vim /home/demouser/.vim/doc: plugin1.txt plugin2.txt /home/demouser/.vim/plugin: plugin1.vim /home/demouser/.vim/syntax: plugin1.vim
vundle
工具实际上建立在另一个名为 pathogen
的插件管理器上,并提供了一个超集的功能。 pathogen
管理器通过为每个单独的插件创建单独的插件目录树来简化插件管理。
这意味着不是让每个插件将不同的文件放入不同的目录,将它们与其他插件混合,而是每个插件将在插件特定的子目录内重新创建所需的目录结构。
它们保存在一个名为 bundle
的子目录中。 相反,您的目录结构看起来像这样:
ls -AR ~
justin@vundle:~$ ls -AR ~ /home/justin: .bash_history .bash_logout .bashrc .profile .vim .vimrc /home/justin/.vim: autoload bundle /home/justin/.vim/autoload: plugin1.vim plugin2.vim /home/justin/.vim/bundle: plugin1 plugin2 /home/justin/.vim/bundle/plugin1: autoload bitmaps doc plugin syntax /home/justin/.vim/bundle/plugin1/autoload: plugin1.vim /home/justin/.vim/bundle/plugin1/bitmaps: plugin1.png . . .
这创建了一个更深的嵌套系统,但它允许我们轻松地将我们的插件作为一个单元进行管理。 如果我们不想再使用“plugin1”,我们可以这样做:
rm -rf ~/.vim/bundle/plugin1
这大大简化了我们的管理方案。 这基本上是 pathogen
完成的。
vundle
的作用是在 vim
本身内部增加一个管理接口,让您获取更多插件、更新插件等。 它在某些人所说的 pathogen
的组织改进之上添加了“管理”部分。
开始清理并安装 Vundle
现在您对底层 vundle
系统的工作原理有了一点了解,我们可以开始了。
首先,如果您有当前的 ~/.vimrc
文件和 ~/.vim
目录,我们将备份它们并重新开始。 这将帮助我们最大限度地减少不兼容性和潜在问题:
if [ -e .vimrc ]; then mv .vimrc .vimrc_bak; fi if [ -e .vim ]; then mv .vim .vim_bak; fi
之后,我们可以直接从 GitHub 克隆 vundle
插件,这将重新创建我们的一些 ~/.vim
目录结构:
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
接下来,我们必须重新创建我们的 ~/.vimrc
文件来告诉 vim
使用我们新的包管理系统。
vim ~/.vimrc
在内部,我们需要一些东西来开始我们的工作。 首先,我们需要确保 vim
没有试图保持与其前身 vi
的兼容性。 这是 vundle
要求。 当 vim
尝试兼容时,它会禁用大多数值得在 vi
上使用的功能。
我们现在还想关闭默认的“文件类型”控件,因为 vim
在运行时缓存文件类型规则的方式会干扰 vundle
改变运行时环境的方式。 我们稍后会改回来:
set nocompatible filetype off
接下来,我们需要调整 vim
的运行时路径以包含我们从 GitHub 克隆的 vundle
位置。 之后,我们将调用vundle
初始化函数:
set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc()
现在,我们的 vundle
系统已初始化,我们可以添加我们希望管理的插件。 虽然 vundle
可以管理本地插件,但它的优势之一是能够将本地版本与在线版本绑定,从而允许您自动更新等。
我们可以通过指向 GitHub 存储库、vim 脚本、其他远程 git
存储库和本地 git
存储库来做到这一点。
首先,我们必须用vundle
管理vundle
包本身。 然后我们可以添加我们想要的任何其他插件:
set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " 这是 Vundle 包,可以在 GitHub 上找到。 " 对于 GitHub 存储库,您使用 " 'user/repository' 格式插件 'gmarik/vundle'指定插件 " 我们还可以添加带有“.git”扩展名的存储库插件 'scrooloose/nerdtree.git' " 要从 Vim 脚本中获取插件,您可以按名称引用插件",因为它出现在站点Plugin 'Buffergator' " 现在我们可以将文件类型功能重新启用文件类型插件缩进
注意最后,我们如何重新建立我们之前打开的“文件类型”功能。 所有插件必须在 call vundle#rc()
行和 filetype plugin indent on
指令之间声明。
在我们的 ~/.vimrc
的这一部分之后,我们可以添加我们需要的任何其他 vim
设置。
完成后,保存并关闭文件(“:wq”或“ZZ”)。
使用 Vundle 安装和更新插件
现在,我们只需要告诉 vundle
安装我们添加到文件中的所有插件。 开始vim
:
vim
现在,发出 :PluginInstall
命令:
:PluginInstall
这将在 vim
中打开一个新的拆分窗口,并运行每个新插件的安装。 完成后,您可以通过键入以下内容关闭新缓冲区和窗口:
:bdelete
您添加到 ~/.vimrc
文件的插件现已安装!
如果您想更新插件,可以使用以下两个命令之一:
:PluginUpdate
或者
:PluginInstall!
这 ”!” 在 :PluginInstall!
命令的末尾基本上告诉 vundle
重新安装所有插件(它检查是否需要任何操作),这将获得最新版本。
更新后,您可以通过在 vundle
插件窗口中键入“u”来查看实际影响了哪些插件。 如果您想查看更新或安装期间发生的操作的完整日志,请键入“l”以查看完整日志。
使用 Vundle 管理插件
现在您已经掌握了如何安装插件的窍门,让我们来看看其他一些可以帮助您从 vundle
中获得更多收益的功能。
获取新插件
vundle
最有用的功能之一是能够查找和安装更多插件。
我们可以通过键入以下内容列出 vundle
可以在 Vim Scripts 站点上找到的每个插件:
:Plugins
或者
:PluginSearch!
这 ”!” 在命令末尾刷新 Vim Scripts 站点的本地列表。
如果我们想搜索特定的插件,我们可以使用相同的语法,如下所示:
:插件搜索! 插件查询
这将打开一个包含我们查询结果的新窗口。 如果您最近刷新了本地数据库,则可以省略“!” 从命令。 所以如果你搜索“markdown”,你可能会得到这样的结果:
PluginSearch markdown
"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list "Search results for: markdown Plugin 'instant-markdown.vim' Plugin 'MarkdownFootnotes' Plugin 'Markdown' Plugin 'Markdown-syntax'
正如您在顶部看到的那样,您可以通过移动到带有插件的行并输入“i”来轻松安装任何插件。
这将下载并安装插件,但不会更新您的 ~/.vimrc
以使其正确自动加载。
因此,要安装“MarkdownFootnotes”插件,我们将光标移动到该行按“i”:
"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list "Search results for: markdown Plugin 'instant-markdown.vim' Plugin 'MarkdownFootnotes' # 移到这里并按“i” Plugin 'Markdown'插件“降价语法”
您可以在安装完成后删除 vundle
缓冲区:
:bdelete
然后,通过键入以下内容编辑您的 ~/.vimrc
:
:e ~/.vimrc
添加新的插件行:
set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() 插件“gmarik/vundle” 插件'scrooloose/nerdtree.git' 插件'Buffergator' 插件'MarkdownFootnotes' 文件类型插件缩进
此时您可以保存并关闭文件。
管理已安装的插件
一旦你安装了一些插件,你可以使用 vundle
来管理它们。
要查看所有已安装的插件,请输入:
:PluginList
" My Plugins Plugin 'gmarik/vundle' Plugin 'scrooloose/nerdtree.git' Plugin 'Buffergator' Plugin 'MarkdownFootnotes'
如果您需要删除插件,则需要分两步完成。
您可以通过列出插件文件来删除它们,然后当光标位于要删除的插件上时按“D”键。 所以要删除我们的“MarkdownFootnotes”插件,我们可以选择它并点击“D”:
" My Plugins Plugin 'gmarik/vundle' Plugin 'scrooloose/nerdtree.git' Plugin 'Buffergator' Plugin 'MarkdownFootnotes' # 选中时按“D”
此时,vundle
的配置中仍然有这个插件,但是插件的文件没有安装。 您可以通过键入以下内容再次重新安装文件:
:PluginInstall
不过我们不会这样做。 相反,我们将从我们的 ~/.vimrc
文件中删除该条目:
:e ~/.vimrc
set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() Plugin 'gmarik/vundle' Plugin 'scrooloose/nerdtree.git' Plugin 'Buffergator' filetype plugin indent on
这将完成从系统中删除插件的过程。
一个更简单的方法是先从 ~/.vimrc
文件中删除它。
删除后,您可以调用此命令,该命令会自动删除不在 ~/.vimrc
文件中的所有插件(它会要求您确认):
:PluginClean
" Removing Plugins: Plugin 'MarkdownFootnotes' . . . Continue? [Y/n]:
您可以键入“Y”来删除所有未引用的插件。
结论
至此,您应该可以通过 vundle
界面轻松管理您的插件。 乍一看,为 vim
配备一个好的插件管理器的优势可能并不明显,尤其是在您不使用很多插件的情况下。
但是,这给您带来的最大好处之一是能够轻松地尝试新插件。 当流程干净简单时,您更有可能探索不同的插件并尝试集成功能,否则您可能会吸收它并以更复杂的方式做事。