" Remove all the lines that aren't lists of keywords
" (there doesn't seem to be anything much more complicated
" than that in the definition file)
:g!/<Keywords name=/d
" Convert the lines (fairly poor XML parsing here!)
:%s/\s*<Keywords name="\([^"]\+\)">\([[:alpha:]_ ]\{-}\)<\/Keywords>/syn keyword \1 \2/
这将生成许多看起来像这样的行:
syn keyword Words1 case then do while
您需要调整语法类(在本例中为Words1),使其在Vim中得到突出显示(或将其与在Vim中将突出显示的内容进行同步链接)。
然后,您可能需要使用正则表达式处理符号,但手动处理可能更容易,因此请将以下内容进行转换:
<Keywords name="Operators">- ! " # $ & * , . ; ? @ \ ^ { | } ~ + < = ></Keywords>
into:
syn match Operators /\<[-!"#$&*,.;?@\\^{|}~+<=>]/
(这里的\<
表示一个单词边界,后面跟着一个字符类[..]
包含所有符号)。
然后你只需要添加:
if exists("b:current_syntax")
finish
endif
在开始时:
let b:current_syntax = "q"
当然,这还不足以让您达到目标,但希望这会为您提供大部分所需内容,以获得所需的语法文件。您可以在以下方面获得充足的帮助:
:help syntax
通过查看运行时文件夹中语法目录中的示例,可以更好地理解相关的it技术。
祝你好运!