作为 Vi 的升级版,Vim 毫无争议是 Linux 中最受欢迎的命令行编辑器之一。除了是一个多功能编辑器外,世界各地的软件开发者将 Vim 当做 IDE(集成开发环境(Integrated Development Environment))来使用。
事实上,因为 Vim 可以通过插件来扩展其自身功能才使得它如此功能强大。不用说,肯定有那么几个 Vim 插件是旨在提高用户的编程体验的。
特别是对于刚刚使用 Vim 或者使用 Vim 做开发的的软件开发者来说,我们将在本教程中讨论一些非常有用的 Vim 插件,具体请看例示。
请注意:本教程中列举的所有例示、命令和说明都是在 Ubuntu 16.04 环境下进行测试的,并且,我们使用的 Vim 版本是 7.4。
插件安装设置
这是为新用户准备的,假设他们不知道如何安装 Vim 插件。所以,首先,就是给出一些完成安装设置的步骤。
- 在你的家目录下创建
.vim
目录,并在其中创建子目录autoload
和bundle
。 - 然后,在
autoload
放置 pathogen.vim 文件,这个文件可以从此处 下载。 - 最后,在你的家目录创建
.vimrc
文件,并添加以下内容。
call pathogen#infect()
Vim plugin installation
至此,你已完成了 Vim 插件安装的准备工作。
注意:我们已经讨论了使用 Pathogen 管理 Vim 插件。当然还有其他的插件管理工具——欲了解,请访问此处。
现在已经全部设置完毕,就让我们来讨论两个好用的 Vim 插件吧。
Vim 标签侧边栏(Tagbar)插件
首先就是标签侧边栏(Tagbar)插件。该插件能够让你浏览源文件包含的标签,从而提供该源文件的结构简览。其官网的插件说明是这样说的:“它通过创建侧边栏,然后以一定顺序展示从当前文件以 ctags 提取的标签来完成这一功能。这意味着,比如,C++ 中的方法将展示在其自身所定义在的类里边。”
听起来很酷,不是吗?让我们来看看该怎么安装它。
标签侧边栏(Tagbar)的安装过程是相当容易的——你只需要运行下列命令:
cd~/.vim/bundle/
gitclonegit://github.com/majutsushi/tagbar
安装完之后就可以使用了,你可以在 Vim 中打开一个 .cpp 文件来测试它:进入命令模式,然后运行 :TagbarOpen
命令。以下是运行 :TagbarOpen
命令之后出现侧边栏(右侧) 的效果图。
Vim tagbar plugin
使用 :TagbarClose
可以关闭侧边栏。值得一提的是,可以使用 :TagbarOpen fj
命令打开侧边栏来打开它的跳转(shift control)功能。也就是说,你可以很方便的浏览当前文件包含的标签——在对应的标签上按下 Enter 键,然后在左侧的源代码窗口跳转到对应的位置。
假如你想要反复地开关侧边栏,你可以使用 :TagbarToggle
命令,而不用交替的使用 :TagbarOpen
和 :TagbarClose
命令。
如果你觉得输入这些命令很费时间,你可以为 :TagbarToggle
命令创建快捷键。比如,添加以下内容到 .vimrc
文件中:
nmap<F8>:TagbarToggle<CR>
这样,你就可以用 F8 来切换标签侧边栏(Tagbar)了。
更进一步,有时候你可能会注意到某个标签前边有一个 +
、-
或者 #
符号。比如,以下截图(取自该插件的官网)展示了一些前边有 +
号的标签。
Toggle Tagbar window
这些符号基本是用来表明一个特定标签的可见性信息。特别是 +
表示该类是 public 的,而 -
表示一个 private 类。#
则是表示一个 protected 类。
以下是使用标签侧边栏(Tagbar)的一些注意事项:
- 该插件的官网早就有说明:“标签侧边栏(Tagbar)并非是管理标签(tags)文件而设计,它只是在内存中动态创建所需的标签,而非创建任何文件。标签(tags)文件的管理有其他插件提供支持。”
- 低于 7.0.167 版本的 Vim 和标签侧边栏(Tagbar)插件存在着一个兼容性问题。根据官网:“如果你受到此问题的影响,请使用代替版:下载 zip 压缩包。这对应到 2.2 版本,但由于大量的依赖变更,它可能不会再升级。”
- 如果你在加载该插件时遇到这样的错误:未找到 ctags!(Tagbar: Exuberant ctags not found!)。你可以从 此处下载并安装 ctags 来修复错误。
- 获取更多信息请访问 这里。
Vim 界定符自动补齐(delimitMate)插件
下一个要介绍的插件就是界定符自动补齐(delimitMate)。该插件在 Vim 插入模式下提供引号、圆括号和方括号等界定符自动补齐功能。
该插件官网说:“它同时也提供一些相关的特性让你在输入模式下变得更加便捷,比如语法纠错(在注释区或者其他的可配置区不会自动插入结束界定符)、回车和空格填充(默认关闭)等。”
安装步骤与之前介绍的相似:
cd~/.vim/bundle/
gitclonegit://github.com/Raimondi/delimitMate.git
一旦你成功安装这个插件(即上述命令执行成功),你就不需要进行任何配置了——当 Vim 启动时会自动加载这个插件。
至此,在你使用 Vim 的任何时候,只要你输入一个双引号、单引号、单号、圆括号、方括号,它们都会自动补齐。
你可以自己配置界定符自动补齐(delimitMate)。比如,你可以添加需要自动补齐的符号列表,阻止自动加载该插件,对指定类型文件关闭该插件等。想了解如何配置这些(或者其他更多的配置),请阅读该插件的详细文档——运行 :help delimitMate
即可。
上述命令会将你的 Vim 窗口水平分割成两个,上边一个包含我们所说的文档。
Vim deliMate Plugin
结论
本文之中提到的两个插件,Tagbar 需要花费较多时间来适应——你应该会同样这个说法。但只要正确设置好它(这意味着你像是有了快捷键一样方便),就容易使用了。至于 delimitMate,不需要任何要求就可以上手。
本教程就是向你展示 Vim 如何高效能的想法。除了本文中提及的,仍然还有许多开发者可用的插件,我们将在下一个部分进行讨论。假如你正在使用一个关于开发的 Vim 插件,并希望广为人知,请在下方留下评论。
我们将在本教程的第二部分讲到 语法高亮插件:Syntastic。
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2017-05/143907p2.htm
毫无疑问,Vim 是一个开箱即用并能够胜任编程任务的编辑器,但实际上是该编辑器中的插件帮你实现这些方便的功能。在 开发者的实用 Vim 插件(一),我们已经讨论两个编程相关的 Vim 插件——标签侧边栏(Tagbar)和定界符自动补齐(delimitMate)。作为相同系列,我们在本文讨论另一个非常有用、专门为软件开发正定制的插件——语法高亮插件。
请注意:本教程中列举的所有例示、命令和说明都是在 Ubuntu 16.04 环境下进行测试的,并且,我们使用的 Vim 版本是 7.4。
语法高亮(Syntastic)插件
假如你的软件开发工作涉及到 C/C++ 语言,毫无疑问的说,遇到编译错误也是你每天工作中的一部分。很多时候,编译错误是由源代码之中的语法不正确造成的,因为开发者在浏览源码的时候很少能够一眼就看出所有这些错误。
那么 Vim 中是否存在一种插件可以让你不经编译源码就可以显示出语法错误呢?当然是有这样一种插件的,其名字就是 Syntastic。
“Syntastic 是 Vim 用来检验语法的插件,通过外部语法校验器校验文件并将错误呈现给用户。该过程可以在需要时进行,或者在文件保存的时候自动进行。”该插件 官方文档 如是说。“如果检测到语法错误就会提示用户,因为不用编译代码或者执行脚本就可以知道语法错误,用户也就乐享与此了。”
安装过程和第一部分提到的方法类似,你只需要运行下列命令即可:
cd~/.vim/bundle/
gitclone https://github.com/scrooloose/syntastic.git
一旦你成功安装这个插件(即上述命令执行成功),你就不需要进行任何配置了——当 Vim 启动时会自动加载这个插件。
现在,打开一个源码文件并用 :w
Vim 命令保存即可使用这个插件了。等待片刻之后,如果在源码中有语法错误的好,就会高亮显示出来。比如,看看一下截图你就会明白该插件是如何高亮显示语法错误的:
Vim Syntax error highlighting
在每行之前的 >>
表示该行中有语法错误。了解确切的错误或者想知道是什么东西错了,将光标移到该行——错误描述就会展示在 Vim 窗口的最底下。
View Syntax errors in Vim
这样,不用进行编译你就能够修复大多数语法相关的错误。
再往下,如果你运行 :Errors
命令,就会展现当前源文件中所有语法相关错误的描述。比如,我运行 :Errors
命令就是下图的效果:
Syntastic :Errors command
请记住,:Errors
展现的语法错误是不会自动更新的,这意味着在你修复错误之后,你需要重新运行 :Errors
命令,编辑器底部的错误描述才会消除。
值得一提的是,还有 许多配置选项 能够使得 Syntastic 插件使用起来更加友好。比如,你可以在你的 .vimrc
中添加下列内容,然后 :Errors
就可以在修复错误之后自动更新它的底部描述。
let g:syntastic_always_populate_loc_list =1
添加以下内容,以确保在你打开文件时 Syntastic 插件自动高亮显示错误。
let g:syntastic_check_on_open =1
类似的,你也可以在保存或打开文件时让光标跳转到检测到的第一个问题处,将下列行放到你的 .vimrc
文件之中:
let g:syntastic_auto_jump =1
这个值也可以指定为其它两个值: 2 和 3,其官方文档的解释如下:
“如果设置为 2 的话,光标就会跳到检测到的第一个问题,当然,只有这个问题是一个错误的时候才跳转;设置为 3 的话,如果存在错误,则会跳到第一个错误。所有检测到的问题都会有警告,但光标不会跳转。”
以下信息可能对你有帮助:
“使用 :SyntasticCheck
来手动检测错误。使用 :Errors
打开错误位置列表并使用 :lclose
来关闭。使用 :SyntasticReset
可以清除掉错误列表,使用 :SyntasticToggleMode
来切换激活(在写到 buffer 时检测)和被动(即手动检测)检测错误。”
注意:Syntastic 并不局限于 C/C++ 所写的代码,它同时也支持很多的编程语言——点击 此处 了解更多相关信息。
结论
毫无疑问的,Syntastic 是一个非常有用的 Vim 插件,因为在出现语法相关错误时候,它至少能够让免去频繁编译的麻烦,而且不用说,同时也节约了你不少的时间。
正如你所看到的一样,配置好几个主要选项之后,Syntastic 变得非常好用了。为了帮助你了解这些设置,官方文档中包含了一份“推荐设置”——跟着文档进行设置即可。加入你遇到一些错误、有些疑问或者问题,你也可以查询一下 FAQ。
目前为止,在一系列介绍 vim 插件文章中,我们介绍了使用 Pathogen 插件管理包安装基本的 vim 插件,也提及了另外三个插件:Tagbar、delimitMate 和 Syntastic。现在,在最后一部分,我们将介绍另一个十分有用的插件 a.vim。
请注意所有本篇教程所提及的例子、命令和指导,它们已经在 Ubuntu 16.04 测试完毕,vim 使用版本为 vim7.4 (Ubuntu 16.04 的默认版本)。
A.vim
如果你一直用像 C、C++ 这样的语言进行开发工作,你一定有这样的感触:我特么已经数不清我在头文件和源代码之间切换过多少次了。我想说的是,确实,这个操作十分基本,十分频繁。
尽管使用基于 GUI(图形界面)的 IDE(集成开发环境)非常容易通过鼠标的双击切换文件,但是如果你是资深 vim 粉,习惯用命令工作就有点尴尬了。但是不要害怕,我有秘籍--插件 a.vim。它可以让你解决尴尬,专治各种文件切换。
在我们介绍这个神器用法之前,我必须强调一点:这个插件的安装过程和我们其他篇介绍的不太一样,步骤如下:
- 首先,你需要下载两个文件(
a.vim
和alternate.txt
),你可以在这里找到它们。 - 接下来,创建如下目录:
~/.vim/bundle/avim
、~/.vim/bundle/avim/doc
、~/.vim/bundle/avim/plugin
和~/.vim/bundle/autoload
。 - 创建好目录之后,将
a.vim
放到~/.vim/bundle/avim/plugin
和~/.vim/bundle/autoload
,以及将alternate.txt
放到~/.vim/bundle/avim/doc
。
就是这样,如果上述步骤被你成功完成,你的系统就会安装好这个插件。
使用这个插件十分简单,你仅仅需要运行这个命令 :A
如果目前的文件是源文件(比如 test.c
),这个神器就会帮你打开 test.c
对应的头文件(test.h
),反之亦然。
当然咯,不是每个文件对应的头文件都存在。这种情况下,如果那你运行 :A
命令,神器就会为你新建一个文件。比如,如果 test.h
不存在,那么运行此命令就会帮你创建一个 test.h
,然后打开它。
如果你不想要神器开启此功能,你可以在你的家目录的隐藏文件 .vimrc
中写入 g:alternateNonDefaultAlternate
变量,并且赋给它一个非零值即可。
还有一种情况也很普遍,你需要打开的文件并非是当前源代码的头文件。比如你目前在 test.c
你想打开 men.h
这个头文件,那么你可以输入这个命令 :IH <filename>
,毋需赘言,你肯定要在后面输入你要打开的的文件名称 <filename>
。
目前为止,我们讨论的功能都仅限于你当前文件和要操作的文件都在同一个目录去实现。但是,你也知道,我们还有特殊情况,我是说,许多项目中头文件与对应的源文件并不一定在同一目录下。
为了搞定这个问题,你要使用这个 g:alternateSearchPath
这个变量。官方文档是这么解释的:
这个插件可以让用户配置它的搜索源文件和头文件的搜索路径。这个搜索路径可以通过设置
g:alternateSearchPath
这个变量的值指定。默认的设定如下:
g:alternateSearchPath ='sfr:../source,sfr:../src,sfr:../include,sfr:../inc'
使用这个代码表示神器将搜索
../source
、../src
、../include
和../inc
下所有与目标文件相关的文件。g:alternateSearchPath
变量的值由前缀和路径组成,每个单元用逗号隔开。sfr
前缀是指后面的路径是相对于目前文件的,wdr
前缀是指目录是相对于目前的工作目录,abs
是指路径是绝对路径。如果不指定前缀,那么默认为sfr
。
如果我们前文所提及的特性就能让你觉得很炫酷,那我不得不告诉你,这才哪跟哪。还有一个十分有用的功能是分割 Vim 屏幕,这样你就可以同时看到头文件和相应的源文件。
哦,还有,你还可以选择垂直或者水平分割。全凭你心意。使用 :AS
命令可以水平分割,使用 :AV
可以垂直分割。
Vim.a vertical split screen
vim.a horizontal split screen
使用 :A
命令在已经打开的文件中切换。
这个插件还可以让你在同一个 Vim 窗口中不同选项卡中打开多个相应的文件,你键入这个命令 :AT
。
tabs in Vim with a.vim.
当然,你可以用这些命令 :AV
、:AS
和 :AT
,也可以使用这些命令 :IHV
、:IHS
和 :IHT
。
最后
还有许多和编程相关的 Vim 的插件,我们在这个三篇系列主要讨论的是,如果你为你的软件开发工作安装了合适的插件,你就会明白为什么 vim 被叫做编辑器之神。
当然,我们在这只关注编程方面,对于那些把 Vim 当做日常文档编辑器的人来说,你也应该了解一些 Vim 的插件,让你的编辑更好,更高效.我们就改日再谈这个问题吧。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143907.htm