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

时间:2010-10-20 14:26:23

标签: vim notepad++ vim-syntax-highlighting kdb

我有一个q / kdb +语言的语法高亮文件,我想将它转换为vim兼容文件,所以我的q代码看起来不会比平常更难看。

是否有可用的工具自动将notepad ++ xml语法高亮显示文件转换为vi版本?我环顾四周,但找不到任何东西。

或者,是否有人有vim q语法高亮文件?

2 个答案:

答案 0 :(得分:6)

一个q / kdb + vim语法高亮文件: https://github.com/simongarland/vim

答案 1 :(得分:3)

这两个问题的答案都是否定(我不知道任何转换器,我没有q语法高亮文件),但突出显示XML格式的Notepad ++语法看起来非常简单。我手边没有'Q',但我看了website中的一个,翻译看起来很微不足道。在这种情况下,您可以完成大部分工作:

" 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>

成:

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

(这是\<标记单词边界,后跟一个字符类[..],其中包含所有符号。)

然后你只需要添加:

if exists("b:current_syntax")
    finish
endif

一开始就是:

let b:current_syntax = "q"

最后。

当然,这并不能让你一路走来,但希望它能为你提供获得所需语法文件所需的大量内容。有很多帮助:

:help syntax

并查看运行时文件夹的语法目录中的示例。

祝你好运!