标签 Vim 下的文章

这篇文章是 Vim 用户指南系列文章中的一篇:

Vim 编辑器提供了很多的特性,要想全部掌握它们很困难。然而,花费更多的时间在命令行编辑器上总是有帮助的。毫无疑问,和 Vim 用户们进行交流能够让你更快地学习新颖有创造性的东西。

注: 本文中用到的例子,使用的 Vim 版本是 7.4.52 。

1、 同时编辑多个文件

如果你是一名软件开发者或者把 Vim 作为主要的编辑器,那么可能很多时候你需要同时编辑多个文件。“ 紧跟 following ”是在同时编辑多个文件时可用的实用技巧。

不需要在多个 shell 界面中打开多个文件,你可以通过把多个文件的文件名作为 Vim 命令的参数从而在一个 shell 界面中打开多个文件。比如:

vim 文件1 文件2 文件3

第一个文件(例子中的文件1)将成为当前文件并被读入缓冲区。

在编辑器中,使用 :next:n 命令来移动到下一个文件,使用 :prev:N 命令返回上一个文件。如果想直接切换到第一个文件或最后一个文件,使用 :bf:bl 命令。特别地,如果想打开另外的文件并编辑,使用 :e 命令并把文件名作为参数(如果该文件不在当前目录中则需要完整路径做为参数)。

任何时候如果需要列出当前打开的所有文件,使用 :ls 命令。看下面展示的屏幕截图。

注意 ”%a” 表示文件在当前活动窗口,而 “#” 表示上一个活动窗口的文件。

2、 通过自动补全节约时间

想节约时间并提高效率吗?使用缩写吧。使用它们能够快速写出文件中多次出现、复杂冗长的词。在 Vim 中缩写命令写就是 ab

比如,当你运行下面的命令以后:

:ab asap as soon as possible

文件中出现的每一个 asap 都会被自动替换为 as soon as possible ,就像你自己输入的一样。

类似地,你可以使用缩写来更正常见的输入错误。比如,下面的命令

:ab recieve receive

将会自动更正拼写错误,就像你自己输入的一样。如果在一次特殊情况下你想阻止缩写展开或更正发生,那么你只需要在输入一个单词的最后一个字母以后按 Ctrl + V ,然后按空格键。

如果你想把刚才使用的缩写保存下来,从而当你下次使用 Vim 编辑器的时候可以再次使用,那么只需将完整的 ab 命令(没有起始的冒号)添加到 /etc/vim/vimrc 文件中。如果想删除某个缩写,你可以使用 una 命令。比如: una asap

3、 切分窗口便于复制/粘贴

有时,你需要从一个文件将一段代码或文本的一部分复制到另一个。当使用 GUI(图形界面)编辑器的时候,这很容易实现,但是当使用一个命令行编辑器的时候,这就变得比较困难并且很费时间。幸运的是, Vim 提供了一种高效、节约时间的方式来完成这件事。

打开两个文件中的一个然后切分 Vim 窗口来打开另一个文件。可以通过使用 split 命令并以文件名作为参数来完成这件事。比如:

:split test.c

上面的命令将分离窗口并打开文件 “test.c”

注意到 split 命令水平分离 Vim 窗口。如果你想垂直分离窗口,那么你可以使用 vsplit 命令。当同时打开了两个文件并从一个文件中复制好内容以后,按 Ctrl + W 切换到另一个文件,然后粘贴。

4、 保存一个没有权限的已编辑文件

有时候当你对一个文件做了大量更改以后才会意识到你对该文件仅有 只读 权限。

虽然把文件关闭,获取权限以后再重新打开是一种解决方法。但是如果你已经做了大量更改,这样做会很浪费时间,因为在这个过程中所有的更改都会丢失。 Vim 提供了一种方式来处理这种情况:你可以在编辑器中在保存文件前更改文件权限。命令是:

:w !sudo tee %

这个命令将会向你询问密码,就像在命令行中使用 sudo 一样,然后就能保存更改。

一个相关的技巧:在 Vim 中编辑一个文件的时候,如果想快速进入命令行提示符,可以在编辑器中运行 :sh 命令,从而你将进入一个交互的 shell 中。完成以后,运行 exit 命令可以快速回到 Vim 模式中。

5、 在复制/粘贴过程中保持缩进

大多数有经验的程序员在 Vim 上工作时都会启用自动缩进。虽然这是一个节约时间的做法,但是在粘贴一段已经缩进了的代码的时候会产生新的问题。比如,下图是我把一段已缩进代码粘贴到一个在自动缩进的 Vim 编辑器中打开的文件中时遇到的问题:

这个问题的解决方法是 pastetoggle 选项。在 /etc/vim/vimrc 文件中加入下面这行内容:

set pastetoggle=<F2>

然后当你在 插入 模式中准备粘贴代码前先按 F2 键,就不会再出现上图中的问题,这样会保留原始的缩进。注意,你可以用其他的任何键来代替 F2,如果它已经映射到了别的功能上。

结论

更进一步的提高你的 Vim 编辑器技巧的唯一方法是,在你日复一日的工作中使用命令行编辑器。留意那些耗时多的操作,然后尝试去寻找是否有编辑器命令可以很快地完成这个操作。


via: https://www.maketecheasier.com/vim-tips-tricks-for-experienced-users/

作者:Himanshu Arora 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文是 Vim 用户指南 系列的其中一篇:

Vim 编辑器是一个基于命令行的工具,是传奇编辑器 vi 的增强版。尽管图形界面的富文本编辑有很多,但是熟悉 Vim 对于每一位 Linux 的使用者都能有所帮助——无论你是经验丰富的系统管理员,还是刚上手树莓派的新手用户。

这个轻量级的编辑器是个非常强大的工具。在有经验的使用者手中,它能完成不可思议的任务。除了常规的文本编辑功能以外,它还支持一些进阶特性。例如,基于正则表达式的搜索和替换、编码转换,以及语法高亮、代码折叠等的编程特性。

使用 Vim 时有一个非常重要的一点需要注意,那就是按键的功能取决于编辑器当前的“模式”。例如,在“普通模式”输入字母j时,光标会向下移动一行。而当你在“插入模式”下输入字符,则只是正常的文字录入。

下面就是速查表,以便于你充分利用 Vim。

基本操作

快捷键功能
Esc从当前模式转换到“普通模式”。所有的键对应到命令。
i“插入模式”用于插入文字。回归按键的本职工作。
:“命令行模式” Vim 希望你输入类似于保存该文档命令的地方。

方向键

快捷键功能
h光标向左移动一个字符
jCtrl + J光标向下移动一行
kCtrl + P光标向上移动一行
l光标向右移动一个字符
0(数字 0)移动光标至本行开头
$移动光标至本行末尾
^移动光标至本行第一个非空字符处
w向前移动一个词 (上一个字母和数字组成的词之后)
W向前移动一个词 (以空格分隔的词)
5w向前移动五个词
b向后移动一个词 (下一个字母和数字组成的词之前)
B向后移动一个词 (以空格分隔的词)
5b向后移动五个词
G移动至文件末尾
gg移动至文件开头

浏览文档

快捷键功能
(跳转到上一句
)跳转到下一句
{跳转到上一段
}跳转到下一段
[[跳转到上一部分
]]跳转到下一部分
[]跳转到上一部分的末尾
][跳转到上一部分的开头

插入文本

快捷键功能
a在光标后插入文本
A在行末插入文本
i在光标前插入文本
o(小写字母 o)在光标下方新开一行
O(大写字母 O)在光标上方新开一行

特殊插入

快捷键功能
:r [filename]在光标下方插入文件 [filename] 的内容
:r ![command]执行命令 [command] ,并将输出插入至光标下方

删除文本

快捷键功能
x删除光标处字符
dw删除一个词
d0删至行首
d$删至行末
d)删至句末
dgg删至文件开头
dG删至文件末尾
dd删除该行
3dd删除三行

简单替换文本

快捷键功能
r{text}将光标处的字符替换成 {text}
R进入覆写模式,输入的字符将替换原有的字符

复制/粘贴文本

快捷键功能
yy复制当前行至存储缓冲区
["x]yy复制当前行至寄存器 x
p在当前行之后粘贴存储缓冲区中的内容
P在当前行之前粘贴存储缓冲区中的内容
["x]p在当前行之后粘贴寄存器 x 中的内容
["x]P在当前行之前粘贴寄存器 x 中的内容

撤销/重做操作

快捷键功能
u撤销最后的操作
Ctrl+r重做最后撤销的操作

搜索和替换

快捷键功能
/search_text检索文档,在文档后面的部分搜索 search\_text
?search_text检索文档,在文档前面的部分搜索 search\_text
n移动到后一个检索结果
N移动到前一个检索结果
:%s/original/replacement检索第一个 “original” 字符串并将其替换成 “replacement”
:%s/original/replacement/g检索并将所有的 “original” 替换为 “replacement”
:%s/original/replacement/gc检索出所有的 “original” 字符串,但在替换成 “replacement” 前,先询问是否替换

书签

快捷键功能
m {a-zA-Z}在当前光标位置设置书签,书签名可用一个大小写字母({a-zA-Z})
:marks列出所有书签
{a-zA-Z}跳转到书签 {a-zA-Z}

选择文本

快捷键功能
v进入逐字可视模式
V进入逐行可视模式
Esc退出可视模式

改动选中文本

快捷键功能
~切换大小写
d删除一个词
c变更
y复制
>右移
<左移
!通过外部命令进行过滤

保存并退出

快捷键功能
:q退出 Vim,如果文件已被修改,将退出失败
:w保存文件
:w new_name用 new\_name 作为文件名保存文件
:wq保存文件并退出 Vim
:q!退出 Vim,不保存文件改动
ZZ退出 Vim,如果文件被改动过,保存改动内容
ZQ与 :q! 相同,退出 Vim,不保存文件改动

下载 Vim 快捷键速查表

仅仅是这样是否还不足以满足你?别担心,我们已经为你整理好了一份下载版的速查表,以备不时之需。

点此下载(英文)


via: https://www.maketecheasier.com/vim-keyboard-shortcuts-cheatsheet/

作者:Himanshu Arora 译者:martin2011qi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这篇文章是 VIM 用户指南 系列文章中的一篇:

对一个程序员来说,选择一个文本编辑器是一件非常重要的事。因为不同编辑器之间有着不少的差异:图形界面或者非图形界面、不同的快捷键、不同的编程语言支持、不同的插件以及自定义设置等等。我建议不是去搜索最棒的编辑器,而是去选择最适合你的习惯且最适应你的任务的那一个。假如你打算在一个团体中工作,那么最好和你的共事者选择一样的编辑器。这样的话,一旦你在使用中遇到问题,你就可以去向他们寻求帮助。

这正是我在几年之前开始使用 Vim 的原因。通常来说,Vim 会被置于传说中的 Emacs 的对立面。我承认我对 Emacs 知之甚少,但是对于它俩,你需要知道的是它们都可以被深度定制,并且在初学时也都非常令人困惑。这个教程并不会介绍有关 Vim 的所有内容,而是将介绍一些基础以使你在最初就能正确使用它,随后还会展示一些小技巧,借此(希望能)让你有能力自己去探索学习。

Vim 一词来源于 “Vi IMproved”。Vi 是一个被广泛安装于 Unix 系统的非图形界面文本编辑器,并且它也被默认安装在了 Linux 系统中。Vim 是这个原始编辑器的增强版,但是不同于 Vi,并不是每个发行版都默认安装了它。

安装

在 Ubuntu 中可以使用如下命令来安装 Vim:

sudo apt-get install vim

如果你已经对某些插件有了兴趣,使用以下命令:

sudo apt-cache search vim

这命令将给你输出一个很长的和 Vim 有关的包列表。在这之中,有针对不同编程语言的工具,有插件管理器,等等。

在这系列教程中,我将会在 Ubuntu 上使用最新版的 Vim(7.3.154,LCTT 译注:现在最新版为 8.0)。当然你也可以使用其它任何版本。

热身

在终端输入 vim 命令,你将会看到一个非常棒的欢迎界面。

(LCTT 译注:看到了欢迎界面中那行“Help poor children in Uganda!” 了吗?)

如果你之前从未使用过 Vi 或者 Vim,那么你很可能甚至不知道该怎么退出它... 是的,这是事实。任何你常用的快捷键在 Vim 中都将失去原有的效果。(LCTT 译注:网上有个流传的笑话——“如何制造乱码”,“让新手退出 vi”)

首先,要使用任何命令式的功能,像 保存 save 或者 退出 exit ,你都先得输入一个冒号(:)。保存是 :w 而退出是 :q。如果你想不保存文件就退出,那么就要使用强制退出命令 :q!。Vim 中非常棒的一点是你不需要分开输入各个命令,换言之,如果你想保存然后退出,你就可以直接使用 :wq

现在,我们退出 Vim 再打开一个文本文件。为此,你只需把想要编辑的文件名加在命令后面即可:

vim [文本文件名]

一般而言,当你打开一个文本文件,你将会处在查看模式。这使得 Vim 与众不同并且最初会让人感到困惑。Vim 主要由两种模式构成:查看模式和编辑模式。查看模式用于查看内容并且使用一些命令。想要进入编辑模式,只需按 i 键进行 插入 insert 或者 a 键进行 添加 add 。想要返回到查看模式或者进行命令式功能的操作,按 Escape 键即可。 插入 insert 添加 add 的差异仅仅在于你是想在光标位置之前还是在光标之后进入编辑模式并进行文字输入。要想彻底地明白,你应该亲自去尝试一下。我的建议是:仅在行尾使用 添加 add ,而在其它时候使用 插入 insert

(LCTT 译注:此段落中“查看模式”原文是 “visual mode”,疑为“view mode”,在此模式下可以查看文本,但是不能进行编辑;而“visual mode” 是编辑模式的一种,可以按 v 键进入,然后就可以用方向键从当前光标位置开始进行选择,并以反白的视觉效果显示,通常选择后可以按 y 进行复制、按 d 进行剪切等操作。此外, 本文作者的用语并不标准,按照 Vim 自己的用语来说,此处所谓的“查看模式”,应该称之为“普通模式”,“编辑模式”应该称之为“插入模式”,不过意思是一致的。)

要想在文本之中移动光标,你通常可以使用键盘上的方向键,它们无论是在查看模式还是在编辑模式都可以生效。不过,一个真正的纯粹主义者将会告诉你使用按键 h 向左,j 向下,k 向上,l 向右来(在查看模式)进行移动。

现在你已经明白了如何和简单地控制 Vim,我们再来更加深入一些。

一些简单命令

现在你已经熟悉了在正常模式和插入模式之间进行切换,下面是一些可以在正常模式中使用的命令:

  • x:删除一个字符
  • u:撤销一个操作(相当与 Ctrl+z
  • dd:删除一行内容
  • dw:删除一个单词
  • yy:复制一行内容
  • yw:复制一个单词
  • p:粘贴一个之前删除或复制的行或者单词
  • e:跳到下个单词(LCTT 译注:词尾)(比单纯用方向键更快)
  • r:替换一个字母(按 r,松开,然后再按新字母)

当然不止这些,不过这些对现在来说已经足够了。如果你掌握了上面的全部,你将能你很顺溜地使用 Vim 了。

对于那些还想知道更多的人,我再多提一下。你可以在任何这些命令之前加上一个数值,那么这个命令将被重复执行相应的次数。例如,5x 将在当前行连续删除 5 个字母,而 3p 将会粘贴 3 次。

高级命令

最后,作为对你自己继续探索的鼓励和示例,这里给出几个高级且常用的命令:

  • /所搜索的内容:在文中搜索特定内容
  • :sp 文本文件名:将屏幕水平分割成上下两半,新文件展示在另一半。想要在两侧切换焦点,可以使用 Ctrl+w 快捷键。
  • :vsp 文本文件名:同上,但是是垂直分割屏幕
  • Ctrl+Shift+CCtrl+Shift+V:在终端中复制和粘贴文本
  • :! 命令名:在 Vim 中运行 Vim 外的终端命令,直接发送给 shell。例如,:! ls 将在不退出编辑器的同时,显示你当前目录内的文件。

结论

我觉得你现在应该已经有了足够的准备来开始使用 Vim。你还可以通过安装各种插件,编辑 ~.vimrc 文件,或者在 shell 中输入 vimtutor 命令来使用交互式教程以学到更多。

如果你有任何你想分享的关于 Vim 的其它命令,请在评论中告知我们。


via: https://www.maketecheasier.com/start-with-vim-linux/

作者:Himanshu Arora 译者:Yinr 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

从源代码编译 Vim 实际上并不那么困难。下面是你所要做的:

1、首先,安装包括 Git 在内的所有必备的库。对于一个 Debian 类的 Linux 发行版,例如 Ubuntu,命令如下:

sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \
    libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \
    libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \
    python3-dev ruby-dev lua5.1 lua5.1-dev libperl-dev git

在 Ubuntu 16.04 上,lua 开发包的名称是 liblua5.1-dev 而非 lua5.1-dev

如果你知道你将使用哪种语言,可随意删去你不需要的包。例如:Python2 python-dev 或者是 Ruby ruby-dev。这一原则适用于本文的大部分内容。

对于 Fedora 20,将是以下命令:

sudo yum install -y ruby ruby-devel lua lua-devel luajit \
    luajit-devel ctags git python python-devel \
    python3 python3-devel tcl-devel \
    perl perl-devel perl-ExtUtils-ParseXS \
    perl-ExtUtils-XSpp perl-ExtUtils-CBuilder \
    perl-ExtUtils-Embed

在 Fedora 20 上需要这一步来纠正安装 XSubPP 时出现的问题:

### 从 /usr/bin 到 perl 目录做个 xsubpp (perl) 的符号链接
sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/xsubpp 

2、 如果你已经安装了 vim,删掉它。

sudo apt-get remove vim vim-runtime gvim

如果是 Ubuntu 12.04.2,你或许也需要同时删除下面这些软件包:

sudo apt-get remove vim-tiny vim-common vim-gui-common vim-nox

3、 一旦上述内容都被安装好之后,获取 vim 源代码很容易。

注意:如果你使用 python,你的配置目录或许有一个特定的机器名 (例如 config-3.5m-x86_64-linux-gnu)。检查 /usr/lib/python[2/3/3.5] 目录来找到你的 python 配置目录,据此更改 python-config-dir 和/或 python3-config-dir的参数。

添加/删除下面的编译参数以适合您的设置。例如,如果您不打算写任何 Lua 脚本,您可以删去 enable-luainterp

同时,如果你使用的不是 vim 8.0,请确认下面 VIMRUNTIMEDIR 参数设置正确(例如,如果使用 vim 8.0a, 就用 /usr/share/vim/vim80a)。记住,一些 vim 安装是直接安装在 /usr/share/vim 下的;调整好参数以适应你的系统:

cd ~
git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge \
    --enable-multibyte \
    --enable-rubyinterp=yes \
    --enable-pythoninterp=yes \
    --with-python-config-dir=/usr/lib/python2.7/config \
    --enable-python3interp=yes \
    --with-python3-config-dir=/usr/lib/python3.5/config \
    --enable-perlinterp=yes \
    --enable-luainterp=yes \
    --enable-gui=gtk2 --enable-cscope --prefix=/usr
make VIMRUNTIMEDIR=/usr/share/vim/vim80

在 Ubuntu 16.04 上,由于同时开启了 Python2 和 Python3,Python 支持将不工作。 阅读 chirinosky 的回答 以获取变通的处理方法。

如果你想将来轻松卸载 vim,可以使用 checkinstall 来安装 。

sudo apt-get install checkinstall
cd ~/vim
sudo checkinstall

否则,可以使用 make 来安装。

cd ~/vim
sudo make install

要让 vim 成为你默认的编辑器,请使用 update-alternatives

sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1
sudo update-alternatives --set editor /usr/bin/vim
sudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1
sudo update-alternatives --set vi /usr/bin/vim

4、 再检查下,通过查看 vim --version 输出来确认确实在运行新的 Vim 应用程序版本。

如果你的 gvim 不工作(在 ubuntu 12.04.1 LTS 上),试着把 --enable-gui=gtk2 参数变为 --enable-gui=gnome2

如果你遇到问题,仔细检查在步骤 3 开始提到的,使用正确的 Python 配置目录配置 configure

这些 configuremake 命令假设你是一个 Debian 发行版,Vim 的运行库文件目录放在 /usr/share/vim/vim80/,这不是 vim 的默认路径。 在 configure 命令中的 --prefix=/usr 也是如此。这些参数或许对一个不是基于 Debian 的 Linux 发行版来说是有所不同的,在这种情况下,试着移除 configure 命令中的 --prefix 变量和 make 命令中的 VIMRUNTIMEDIR (换句话说,使用这些参数的默认值)。

如果你遇到麻烦, 这里是一些其它编译 Vim 的有用的信息


via: https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source

作者:Val Markovic 等人 译者:zky001 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

让我们把时钟往回拨一点。不,别停…再来一点……好了!在 25 年前,当你的某些专家同事还在蹒跚学步时,Bram Moolenaar 已经开始为他的 Amiga 计算机开发一款文本编辑器。他曾经是 Unix 上的 vi 用户,但 Amiga 上却没有与其类似的编辑器。在三年的开发之后,1991 年 11 月 2 日,他发布了“ 仿 vi 编辑器 Vi IMitation ”(也就是 Vim)的第一个版本。

两年之后,随着 2.0 版本的发布,Vim 的功能集已经超过了 vi,所以这款编辑器的全称也被改为了“ vi 增强版 Vi IMproved ”。现在,刚刚度过 25 岁生日的 Vim,已经可以在绝大部分平台上运行——Windows、OS/2、OpenVMS、BSD、Android、iOS——并且已在 OS X 及很多 Linux 发行版上成为标配软件。它受到了许多赞誉,也受到了许多批评,不同组织或开发者也会围绕它来发起争论,甚至有些面试官会问:“你用 Emacs 还是 Vim?”Vim 已拥有自由许可证,它基于 慈善软件证书 charityware license (“帮助乌干达的可怜儿童”)发布,该证书与 GPL 兼容。

Vim 是一个灵活的、可扩展的编辑器,带有一个强大的插件系统,被深入集成到许多开发工具,并且可以编辑上百种编程语言或文件类型的文件。 在 Vim 诞生二十五年后,Bram Moolenaar 仍然在主导开发并维护它——这真是一个壮举!Vim 曾经在超过 20 年的时间里数次间歇中断开发,但在 2016 年 9 月,它发布了 8.0 版本,添加了许多新功能,为现代程序员用户提供了更多方便。很多年来,Vim 在官网上售卖 T 恤及 logo 贴纸,所得的销售款为支持 ICCF——一个帮助乌干达儿童的德国慈善机构做出了巨大贡献。Vim 所支持的慈善项目深受 Moolenaar 喜爱,Mooleaar 本人也去过乌干达,在基巴莱的一个儿童中心做志愿者。

Vim 在开源历史上记下了有趣的一笔:一个工程,在 25 年中,坚持由一个稳定的核心贡献者维护,拥有超多的用户,但很多人从未了解过它的历史。如果你想简单的了解 Vim,请访问它的网站,或者你可以读一读 Vim 入门的一些小技巧,或者在 Opensource.com 阅读一位 Vim 新用户的故事


via: https://opensource.com/life/16/11/happy-birthday-vim-25

作者:D Ruth Bavousett 译者:StdioA 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

毫无疑问,Vim 是一个开箱即用并能够胜任编程任务的编辑器,但实际上是该编辑器中的插件帮你实现这些方便的功能。在 开发者的实用 Vim 插件(一),我们已经讨论两个编程相关的 Vim 插件——标签侧边栏(Tagbar)和定界符自动补齐(delimitMate)。作为相同系列,我们在本文讨论另一个非常有用、专门为软件开发正定制的插件——语法高亮插件。

请注意:本教程中列举的所有例示、命令和说明都是在 Ubuntu 16.04 环境下进行测试的,并且,我们使用的 Vim 版本是 7.4。

语法高亮(Syntastic)插件

假如你的软件开发工作涉及到 C/C++ 语言,毫无疑问的说,遇到编译错误也是你每天工作中的一部分。很多时候,编译错误是由源代码之中的语法不正确造成的,因为开发者在浏览源码的时候很少能够一眼就看出所有这些错误。

那么 Vim 中是否存在一种插件可以让你不经编译源码就可以显示出语法错误呢?当然是有这样一种插件的,其名字就是 Syntastic。

“Syntastic 是 Vim 用来检验语法的插件,通过外部语法校验器校验文件并将错误呈现给用户。该过程可以在需要时进行,或者在文件保存的时候自动进行。”该插件 官方文档 如是说。“如果检测到语法错误就会提示用户,因为不用编译代码或者执行脚本就可以知道语法错误,用户也就乐享与此了。”

安装过程和第一部分提到的方法类似,你只需要运行下列命令即可:

cd ~/.vim/bundle/

git clone 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。


via: https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers-2-syntastic/

作者:Ansh 译者:GHLandy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出