4

q / kdb +言語用の構文強調表示ファイルがあり、それをvim互換ファイルに変換して、qコードが通常よりも醜く見えないようにします。

notepad ++ xml構文の強調表示ファイルをviバージョンに自動的に変換するために利用できるユーティリティはありますか?周りを見回しましたが、何も見つかりませんでした。

あるいは、誰かがvim q構文ハイライトファイルを持っていますか?

4

2 に答える 2

6

aq/kdb+ vim 構文ハイライト ファイル: https://github.com/simongarland/vim

于 2010-12-18T21:34:36.977 に答える
4

両方の質問に対する答えはノーです (私はコンバーターを知りませんし、構文強調表示ファイルも持っていません)、XML 形式を強調表示する Notepad++ 構文は非常に単純に見えます。「Q」は手元にありませんが、ウェブサイトの 1 つを見たところ、翻訳はかなり簡単に見えます。その場合、ほとんどの作業は次のように行うことができます。

" 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

また、ランタイム フォルダーの構文ディレクトリにある例を参照してください。

幸運を!

于 2010-10-20T15:02:04.043 に答える