Vim手记:语法高亮
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的东西,有⼈写了⼀整本关于编程的书,但我希望你从本教程可以掌握⼀些基础知识并且探索更多知识。
享受学习,这是⼀项你永远不会后悔拥有的技能。