如何快速编写 Vim 语法高亮文件
这里有一份 中文的入门文档 ,但是太长了,不想读,所以有本文
- 最快的办法,就是找一个语法相近的语法高亮文件,稍微改一下
- 自己从头写的话,首先搞定关键字:
syntax case match " 是否区分大小写
syntax keyword 你的关键字类别名字 x 关键字 1 关键字 2
syntax keyword 同样填 x 的话,不会覆盖,只追加 关键字 3 关键字 4
关键字搞不定的,一般用正则匹配:
syntax match 类别名 / 正则表达式 /
正则有个麻烦是不能部分匹配,比如我要匹配花括号前的,/[a-zA-Z_]+\s{/, Vim 的语法高亮没有匹配组的概念,没法只高亮前面的字串,导致花括号也染色了。
这种情况下,需要用到嵌套识别,一般是 region 里嵌套 keyword 和 match,也可以 match 里嵌套 match。例如:
syntax keyword spTodo contained TODO FIXME XXX
syntax cluster spCommentGrp contains=spTodo
syntax region spComment start="//" skip="\\$" end="$" keepend contains=@spCommentGrp
通过 contains 关键字,指定这个区域包含了哪些语法单位。
Tag:
python