这两个问题的答案是否定的(我不知道任何转换器,也没有 aq 语法高亮文件),但 Notepad++ 语法高亮 XML 格式看起来非常简单。我手头没有“Q”,但我看了网站上的一个,翻译看起来很简单。在这种情况下,您可以使用以下方式完成大部分工作:
" 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>
进入:
syn match Operators /\<[-!"#$&*,.;?@\\^{|}~+<=>]/
(这是\<
标记一个单词边界,后跟一个[..]
包含所有符号的字符类)。
然后,您只需要添加:
if exists("b:current_syntax")
finish
endif
在开始时:
let b:current_syntax = "q"
在最后。
当然,这并不能完全满足您的需求,但希望它能为您提供获得所需语法文件所需的很多东西。有很多帮助:
:help syntax
并通过查看运行时文件夹的语法目录中的示例。
祝你好运!