更多高级语法高亮

Vim 的语法高亮是个能轻松得独自撑满一本书的话题。

现在,我们会讲到最后一个重要的点,后面就继续讲其他的内容。 如果你想了解更多,可以通过 :help syntax 阅读 Vim 的文档,或看看别人写的语法文件。

高亮字符串

像大部分编程语言一样,Potion 也支持字符串,例如 "Hello, world!"。 我们要把它们高亮为字符串。要做到这点,我们要使用 syntax region 命令。 把以下代码添加到 Potion 语法文件中:

syntax region potionString start=/\v"/ skip=/\v\\./ end=/\v"/
highlight link potionString String

关闭并重新打开 factorial.pn 文件,你会看到文件末尾的字符串被高亮显示了!

最后一行应该很熟悉了。如果你不知道它做了什么,那就重新阅读之前两个章节。

第一行中,使用了 “region” 来添加语法组。 它有一个 “start” 模式和一个 “end” 模式来分别表示开始和结束的位置。 在本例中,一个 Potion 字符串从一个双引号开始,到下一个双引号结束。

syntax region 中的 “skip” 参数让我们能处理字符串转义,比如 "She said: \"Vimscript is tricky, but useful\"!"

如果我们不用 skip 参数,Vim 会在 Vimscript 前的那个 " 的位置结束字符串,而这不是我们希望的!

简而言之就是,syntax regionskip 参数会告诉 Vim: “虽然你已经开始了范围匹配,但我也想让你忽略任何匹配 skip 的内容,即使它一般是作为范围匹配的结束”。

花几分钟思考思考。如果是 "foo \\" bar" 会发生什么?这是正确的行为么? 这会一直都是正确的行为么?关上书,花几分钟,认认真真地想想

练习

为单引号字符串添加语法高亮。

阅读 :help syn-region

阅读这个会比阅读本章花上更多的时间。给自己倒上一杯饮料,这是你应得的!

原文地址:http://learnvimscriptthehardway.stevelosh.com/chapters/47.html