Vim手记:语法高亮

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Vim⼿记:语法⾼亮
本⽂覆盖范围:
Vim 的着⾊⽅案
设置⾼亮
选择颜⾊
语法⾼亮除错
每个程序员的⽂本编辑器缺少了语法⾼亮、特殊关键字和短语着⾊,都是不完整的。

语法⾼亮突出了⽂档的结构,帮助发现排字错误,利于调试,整体上让⽂本编辑更轻松更有效率。

本篇我们将探讨⼀下Vim的语法⾼亮范式以及如何建⽴和定制着⾊⽅案。

Vim着⾊⽅案
⾸先说明,本⽂谈论的不是哪种颜⾊最好,⽽是Vim如何处理语法⾼亮的问题。

在决定如何给⼀个⽂件着⾊时,Vim⾸先将⽂件分解成若⼲结构组。

这些都是通过编写好的语法命令⽂件来实现,这些⽂件在Vim加载⼀个⽂件的时候就⾃动加载了,加载过程则是基于⼀系列复杂规则。

如果Vim选择了⼀个错误的语法命令⽂件,你可以通过以下命令⼿⼯指定⼀个正确的⽂件:
:set syn=syntax-type
其中syntax-type是⼀个⽂件的类型。

通常⽂件类型就是⽂件扩展名,例如选择PHP语法⾼亮,则将syntax-type设置为“php”。

Vim主要使⽤以下九种⾼亮分组:
Comment : 注释
Constant : 常量,例如数字、引号内字符串、布尔值。

Identifier : 变量标识符名称。

Statement : 编程语⾔的声明,⼀般是像“if”或“while”这样的关键字。

PreProc : 预处理,例如C语⾔中的“#include”。

Type : 变量类型,例如“int”。

Special : 特殊符号,通常是类似字符串中的“\n”。

Underlined : ⽂本下划线。

Error : 显⽰编程语⾔错误的⽂本。

另外还有⼀个分组叫做Normal,表⽰普通⽂本。

也许你已经注意到,这些⾼亮分组主要针对编程语⾔,这是因为语法⾼亮对它们最有⽤。

但是,Vim的⾼亮命令覆盖的⽂件类型远超过编程语⾔,包括从HTML到EMAIL的任何东西。

Vim还⽀持三种输出设备:black-and-white terminal(⿊⽩终端),color terminal(彩⾊终端)和GUI(图形化的⽤户接⼝)。

因为它们每⼀个都有⾃⼰独特的⾼亮能⼒,Vim为它们维护了三个独⽴的⾼亮⽅案。

建⽴⾼亮
实现⾼亮的最简便⽅式就是使⽤别⼈写好的.vimrc⽂件,就像。

⼤多数时候这样做都挺好使。

但是,如果它不好使或者你想从头开始,以下就是告诉你如何从头开始。

你必须在你的.vimrc⽂件的第⼀⾏写⼊:
syntax on
这⾏命令告诉Vim开始使⽤语法⾼亮。

如果你暂时不想改动⽂件,你也可以在Vim窗⼝输⼊它作为⼀⾏命令。

如果你正在使⽤⿊⽩终端或者GUI接⼝,⼀切都⼯作得刚刚好。

如果你正在使⽤⼀个⽀持彩⾊的终端,你也许不得不将以下命令置于syntax on上⼀⾏:
set term=ansi
你也可以尝试⼀下color_xterm来代替ansi。

选择颜⾊
Vim有⼀套默认颜⾊⽅案,在我看来,有点过度明亮和混乱(注释和变量颜⾊是⼀样的)。

但是每个⼈都有⼀套⾃⼰的颜⾊偏好,因此你可能会很想了解如何改变它的⾊彩来符合⾃⼰的⼝味。

Vim着⾊使⽤:highlight和:hi命令。

:hi命令实际上是多⽤途命令,它负责许多例⾏着⾊,我们仅⽤它的颜⾊选择功⽤。

它具有以下语法:
:hi Group key=value ...
Group就是前⾯所说的9个⾼亮分组名。

key-value键值对规定了不同输出终端的⾼亮值。

这⾥有三个基本键名:term、cterm和gui,代表着⿊⽩终端、彩⾊终端和图形界⾯。

除了term以外,另外两个基本键还有两个扩展键名base-namefg和base-namebg,分别代表对应终端的前景和背景颜⾊。

基本键只能拥有⾮⾊彩的⾼亮值,例如加粗和下划线。

以下是⼀些⾼亮键和它们可能的值:
term/cterm/gui: bold, underline, reverse, italic, none
ctermfg/ctermbg: red, yellow, green , blue, magenta, cyan, white, blcak, gray
guifg/guibg: 以上所有颜⾊,⽽且还可以使⽤#rrggbb格式⾊彩。

例如,我想⾼亮我的预处理声明为bright magenta,可以使⽤如下命令:
:hi PreProc ctermfg=magenta cterm=bold guifg=#FF00FF
注意,我可以在⼀⾏中使⽤多个键值对,他们都会应⽤于同⼀个⾼亮分组。

通常来说,只要你喜欢⼀个着⾊⽅案,你可以将它设置在你的~/.vimrc⽂件中,Vim会⾃动将其加载。

语法⾼亮除错
Vim的语法⾼亮偶尔也存在⼀些⼩问题,我就经常遭遇到其中的三个。

没有彩⾊,只有⿊⽩终端⾼亮。

导致这种情况的最常见的原因是Vim⽆法确定终端是否具备彩⾊能⼒。

要修复它,⾸先确保在.vimrc⽂件第⼀⾏设置了term=ansi,⼀定要在syntax on所在⾏之前。

另外还要在shell中将环境变量TERM设置为color_xterm和color-xterm。

颜⾊有了,但不是我想要的。

这常发⽣在你试图修改别⼈的.vimrc⽂件以为⼰⽤的时候。

有时,你只需要将⾃⼰的⾊彩定义全部放到⽂件的底部去就可以修复。

如果不奏效的话,检查所有可疑的代码,然后将它们注释。

(注释⽅法为在⾏⾸添加双引号)
滚屏时颜⾊乱成⼀团
Vim在确定⾼亮法则的时候使⽤多种探索⽅法来节约时间,有时这会造成⼀些故障。

查看:h syn-sync可以得到更多细节。

要修复这个,你可使⽤以下命令:
syn sync minlines=1000
你也可以在.vimrc⽂件中设置更⼤的数值。

在Vim 6.0及以上版本,你可以使⽤以下命令:
syn sync fromstart
该命令强制⾼亮引擎从⽂件第⼀⾏开始解析⽂件,这对⼤⽂件⽽⾔会很慢,但它可以确保⾊彩准确度。

此时此刻,如果你习惯了使⽤Vim,并且你已经⿎捣了⼀阵它的配置,发现⼀些你喜欢的特性,恭喜你,你现在是⼀个Vim User了。

当然,在本教程中我还会教更多的关于Vim的东西,有⼈写了⼀整本关于编程的书,但我希望你从本教程可以掌握⼀些基础知识并且探索更多知识。

享受学习,这是⼀项你永远不会后悔拥有的技能。

相关文档
最新文档