这里有一份 中文的入门文档 ,但是太长了,不想读,所以有本文

  1. 最快的办法,就是找一个语法相近的语法高亮文件,稍微改一下
  2. 自己从头写的话,首先搞定关键字:
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 关键字,指定这个区域包含了哪些语法单位。