介绍
vim
文本编辑器是一个多功能且非常强大的工具,用于操纵简单文本,管理系统配置文件,并创建代码.虽然模特编辑设计的重点和编辑器本身的优雅语法受到用户的喜爱,但它的界面和功能有时缺乏一些用户想要的优点。
幸运的是,‘vim’还包括一个插件或脚本,可以用来以各种方式扩展编辑器的系统. 这些都是以简单的配置文件来实现的,这些文件根据其功能存储在‘~.vim’目录下的子目录中。
出于这个原因,已经为vim
创建了相当多的插件管理器,以帮助使这个任务更简单。我们将在本指南中谈论的插件管理器,称为vundle
,对于保持所有这些部件在线是非常有用的。
我们将探索如何在Ubuntu 12.04 VPS实例中使用vundle
。
安装实用软件
在我们开始探索如何使用vundle
来管理vim插件之前,我们需要安装所有必要的组件。
首先,我们需要更新我们的本地包索引,然后我们需要确保vim
安装(这将是有用的!)和git
可供购买额外的组件:
1sudo apt-get update
2sudo apt-get install vim git
现在我们已经安装了‘vim’和‘git’(如果你正在阅读这篇文章,你可能已经安装了‘vim’),我们会在安装‘vundle’之前暂停一下,谈谈插件传统上是如何工作的,以及‘vundle’如何管理它们。
Vundle是如何工作的?
传统上,vim
在每个用户的主目录中以用户为基础配置,由系统管理员和最终软件本身配置的落后默认设置。
添加功能的插件和附加配置文件通常被添加到一个隐藏的目录中,在 ~/.vim
. 内部,大多数插件是根据它们提供的功能来组织成子目录。
因此,如果您正在使用内置的vim
插件系统,您的主目录可能看起来有点像这样:
1ls -AR ~
1/home/demouser:
2.bash_history .bash_logout .bashrc .profile .vim .vimrc
3
4/home/demouser/.vim:
5autoload bitmaps colors doc plugin syntax
6
7/home/demouser/.vim/autoload:
8plugin1.vim plugin2.vim
9
10/home/demouser/.vim/bitmaps:
11plugin1.png
12
13/home/demouser/.vim/colors:
14plugin2.vim
15
16/home/demouser/.vim/doc:
17plugin1.txt plugin2.txt
18
19/home/demouser/.vim/plugin:
20plugin1.vim
21
22/home/demouser/.vim/syntax:
23plugin1.vim
病原体
工具实际上是建立在一个不同的插件管理器上,称为病原体
,并提供了一套功能的超级组合。
这意味着,而不是让每个插件将不同的文件扔到不同的目录中,将它们与其他插件混合在一起,每个插件会重新创建插件特定的子目录内部所需的目录结构。
这些都保存在一个名为 bundle
的子目录中,而您的目录结构看起来像这样:
1ls -AR ~
1justin@vundle:~$ ls -AR ~
2/home/justin:
3.bash_history .bash_logout .bashrc .profile .vim .vimrc
4
5/home/justin/.vim:
6autoload bundle
7
8/home/justin/.vim/autoload:
9plugin1.vim plugin2.vim
10
11/home/justin/.vim/bundle:
12plugin1 plugin2
13
14/home/justin/.vim/bundle/plugin1:
15autoload bitmaps doc plugin syntax
16
17/home/justin/.vim/bundle/plugin1/autoload:
18plugin1.vim
19
20/home/justin/.vim/bundle/plugin1/bitmaps:
21plugin1.png
22
23. . .
這創造了一個更深的嵌套系統,但它允許我們輕鬆地管理我們的插件作為一個單位. 如果我們不想再使用plugin1
,我們可以這樣做:
1rm -rf ~/.vim/bundle/plugin1
这极大地简化了我们的管理方案,这基本上就是病原体
所能实现的。
vundle
所做的就是在vim
内部添加一个管理界面,让您获得更多的插件,更新插件等,它增加了管理
部分,其中一些人会说是病原体
的组织改进。
开始清理并安装Vundle
现在,你已经了解了底层vundle
系统的运作方式,我们可以开始。
首先,如果您有当前的 ~/.vimrc
文件和 `~/.vim' 目录,我们将备份它们并重新启动,这将有助于我们尽量减少不兼容性和潜在问题:
1if [ -e .vimrc ]; then mv .vimrc .vimrc_bak; fi
2if [ -e .vim ]; then mv .vim .vim_bak; fi
之后,我们可以直接从GitHub克隆vundle
插件,这将重塑我们的一些~/.vim
目录结构:
1git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
接下来,我们必须重新创建我们的~/.vimrc
文件,告诉vim
使用我们的新包管理系统。
1vim ~/.vimrc
首先,我们需要确保vim
不试图保留与其前身vi
的兼容性,这是一个vundle
的要求。
我们还希望暂时关闭默认的filetype
控制,因为vim
在运行时缓存文件类规则的方式会干扰vundle
改变运行时环境的方式。
1set nocompatible
2filetype off
接下来,我们将需要调整vim
的运行时间路径,包括我们从GitHub克隆的vundle
位置,然后我们将调用vundle
初始化函数:
set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc()
现在,我们的vundle
系统已经初始化,我们可以添加我们想要管理的插件,而vundle
可以管理本地插件,其优势之一是能够将本地版本与在线版本联系起来,允许您自动更新等。
我们可以通过指向GitHub存储库,Vim脚本(LINK0),其他远程git
存储库和本地git
存储库来做到这一点。
首先,我们必须管理vundle
包本身,然后我们可以添加我们想要的任何额外的插件:
set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " This is the Vundle package, which can be found on GitHub. " For GitHub repos, you specify plugins using the " 'user/repository' format Plugin 'gmarik/vundle' " We could also add repositories with a ".git" extension Plugin 'scrooloose/nerdtree.git' " To get plugins from Vim Scripts, you can reference the plugin " by name as it appears on the site Plugin 'Buffergator' " Now we can turn our filetype functionality back on filetype plugin indent on
请注意,在最后,我们重置了我们之前启用的filetype
功能,所有插件必须在call vundle#rc()
行和filetype plugin indent on
指令之间进行声明。
在我们的~/.vimrc
这个部分之后,我们可以添加我们需要的任何额外的vim
设置。
完成后,保存并关闭文件(:wq
或ZZ
).
安装和更新插件与Vundle
现在,我们只需要告诉vundle
安装我们添加到文件的所有插件。
1vim
现在,发出 :PluginInstall
命令:
1:PluginInstall
這將在「vim」中開啟一個新的分割窗口,並進行每個新插件的安裝。
1:bdelete
您添加到 ~/.vimrc
文件的插件现在已经安装了!
如果你想更新你的插件,你可以使用这两个命令之一:
1:PluginUpdate
或
1:PluginInstall!
在:PluginInstall!
命令的末尾的!
基本上告诉vundle
重新安装所有插件(它检查是否需要采取任何行动),这将获得最新的版本。
更新后,您可以通过在vundle
插件窗口中键入u
来查看哪些插件实际受到影响. 如果您想要看到更新或安装期间发生的操作的完整日志,请键入l
来查看完整的日志。
使用Vundle管理插件
现在你已经知道如何安装插件了,让我们来谈谈一些其他功能,可以帮助你从混乱
中获得更多。
购买新插件
vundle
最有用的功能之一是找到和安装更多的插件的能力。
我们可以列出每个Vundle可以在Vim Scripts网站上找到的插件,键入:
1:Plugins
或
1:PluginSearch!
命令末尾的!
更新了Vim Scripts网站的本地列表。
如果我们想搜索一个特定的插件,我们可以使用这样的语法:
:PluginSearch! plugin_query
如果您最近更新了本地数据库,您可以从命令中删除!
,所以如果您搜索标记
,您可能会得到这样的东西:
1PluginSearch markdown
1"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list
2"Search results for: markdown
3Plugin 'instant-markdown.vim'
4Plugin 'MarkdownFootnotes'
5Plugin 'Markdown'
6Plugin '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' # move here and press "i"
Plugin 'Markdown'
Plugin 'Markdown-syntax'
您可以在安装完成后删除vundle
缓冲器:
1:bdelete
然后,通过键入编辑您的 `~/.vimrc:
1:e ~/.vimrc
添加新的 Plugin 行:
set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Plugin 'gmarik/vundle'
Plugin 'scrooloose/nerdtree.git'
Plugin 'Buffergator'
Plugin 'MarkdownFootnotes'
filetype plugin indent on
您可以在此时刻保存和关闭文件。
管理已安装的插件
一旦您安装了一些插件,您可以使用vundle
来管理它们。
要查看所有已安装的插件,请输入以下内容:
1:PluginList
1" My Plugins
2Plugin 'gmarik/vundle'
3Plugin 'scrooloose/nerdtree.git'
4Plugin 'Buffergator'
5Plugin 'MarkdownFootnotes'
如果你需要删除一个插件,这需要在两个步骤中完成。
您可以通过列出这些插件来删除插件文件,然后在您想要删除的插件上点击D
键,所以要删除我们的MarkdownFootnotes
插件,我们可以选择它并点击D
:
" My Plugins
Plugin 'gmarik/vundle'
Plugin 'scrooloose/nerdtree.git'
Plugin 'Buffergator'
Plugin 'MarkdownFootnotes' # Press "D" when selected
在此时刻,vundle 仍然有这个插件在其配置中,但插件的文件尚未安装。
1:PluginInstall
相反,我们将从我们的 ~/.vimrc
文件中删除该条目:
1:e ~/.vimrc
1set nocompatible
2filetype off
3set rtp+=~/.vim/bundle/vundle/
4call vundle#rc()
5
6Plugin 'gmarik/vundle'
7
8Plugin 'scrooloose/nerdtree.git'
9
10Plugin 'Buffergator'
11
12filetype plugin indent on
这将完成从您的系统中删除插件。
一个更简单的方法是先从 ~/.vimrc
文件中删除它。
删除后,您可以拨打此命令,该命令会自动删除未包含在您的 `~/.vimrc 文件中的任何插件(它会要求您确认):
1:PluginClean
1" Removing Plugins:
2Plugin 'MarkdownFootnotes'
3
4. . .
5Continue? [Y/n]:
您可以输入Y
来删除所有未参考的插件。
结论
到目前为止,您应该能够通过vundle
界面轻松管理您的插件。 拥有一个好的插件管理器对于vim
的优点可能在第一眼看不见,特别是如果你不使用很多插件。
然而,这给你的最大好处之一是能够轻松地尝试新的插件,当过程清洁和简单时,你更有可能探索不同的插件并尝试整合功能,否则你可能会吸取它并以更复杂的方式做事。