2

ログ形式 (基本的には列ベース。同様の例で syslog を考えてください) に一致する構文ファイルを作成しており、列の継承の種類を設定しようとしています。

これには2つの主な目標があります。

まず、列 3 が「コンポーネント」フィールドであり (ヘッダーでマークされているとしましょう。固定位置にある場合もあります)、背景を灰色に設定します。次に、コンポーネント「foo」は赤の前景色を取得し、コンポーネント「バー」は緑の前景色を取得しますが、「コンポーネント」列の背景色を継承する必要があると言いたいです。この場合、フィールドには実際には 2 つの構文一致が必要です。これにより、列全体を簡単に隠すこともできます ( VIM で構文ハイライトの隠し属性を切り替える) 。

次に、レベルのフィールドがあります。クリティカル レベル メッセージの行全体の背景を赤に設定したいのですが、前景は通常の強調表示 (コンポーネント、ソースなど) を介して引き続き設定する必要があります。他の要件のほとんどは省略しました)。

vim のドキュメントを見ると、これは不可能のようです。何か不足していますか?または、誰かが良い回避策を提案できますか?

ありがとう

4

1 に答える 1

1

できません(まだ)。各文字について、Vim は最後の「最も内側の」非透過構文グループの一致によって決定される特定のハイライト グループを 1 つだけ使用します。

これを回避するには、組み合わせたハイライト グループと対応する:syntaxコマンドを定義する必要があります。一部の構文 (たとえば$VIMRUNTIME/syntax/html.vim、およびさまざまな Wiki 形式) では、太字、イタリック、および下線を組み合わせるために使用されますが、その後は退屈で反復的になります。

コマンドの修飾子を追加するパッチが提案されています。それは Bram の Todo リストにあります。combine:syntax

于 2013-05-07T08:53:19.643 に答える