将Notepad++语法高亮文件转换为vim(或者有没有人有q/kdb+ vim语法高亮文件?)

4
我有一个q/kdb+语言的语法高亮文件,我想将它转换为vim兼容的文件,这样我的q代码看起来就不会比平常更丑了。 是否有工具可以自动将notepad++ xml语法高亮文件转换为vi版本?我找了一下,但没找到什么东西。 或者,有没有人有vim q语法高亮文件?
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
6

4
这两个问题的答案都是否定的(我不知道有任何转换器,也没有q语法高亮文件),但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">- ! &quot; # $ &amp; * , . ; ? @ \ ^ { | } ~ + &lt; = &gt;</Keywords>

into:

syn match Operators /\<[-!"#$&*,.;?@\\^{|}~+<=>]/

(这里的\<表示一个单词边界,后面跟着一个字符类[..]包含所有符号)。

然后你只需要添加:

if exists("b:current_syntax")
    finish
endif

在开始时:

let b:current_syntax = "q"

当然,这还不足以让您达到目标,但希望这会为您提供大部分所需内容,以获得所需的语法文件。您可以在以下方面获得充足的帮助:

:help syntax

通过查看运行时文件夹中语法目录中的示例,可以更好地理解相关的it技术。

祝你好运!


谢谢这些技巧!那应该会让制作vim文件的过程变得更容易,看起来不是非常复杂。我只是有点懒。 - Peter Byrne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,