2

Vim長すぎる行(ここのように: https://stackoverflow.com/a/235970/1329844 ) と末尾の空白 (ここのように: https://stackoverflow.com/a/4617156/1329844 )を強調表示したいと思います。ただし、両方のハイライトを使用すると、最後のハイライトのみが適用されます。

私の中に次のコードがあります.vimrc

highlight OverLength ctermbg=0 ctermfg=197
match OverLength /\%>80v.\+/
highlight ExtraWhitespace ctermbg=0
match ExtraWhitespace /\s\+$/

ファイルを開くと、末尾の空白のみが強調表示されます。2 つの強調表示と一致のペアの順序を入れ替えると、長すぎる行だけが強調表示されます。両方のパターンが一致して強調表示されるようにするには、何を変更する必要がありますか?

4

2 に答える 2

3

コマンドは、:matchアクティブなパターンを 1 つだけ持つことができます。両方のハイライトが同じ色を使用している場合は、パターンを で組み合わせることができます\|。ここでは、2 つの代替コマンドのいずれかを使用する必要があります: または のいずれ:2match:3match、または (新しい) 関数を使用して、(最後の)引数としてmatchadd()任意の数値 (> ) を指定できます。3{id}

:call matchadd('OverLength', '\%>80v.\+', 10, 4)
:call matchadd('ExtraWhitespace', '\s\+$', 10, 5)
于 2013-10-18T14:15:47.457 に答える
2

私は、Ingos ソリューションが優先されると思いますが、それでも、これを使用できます。

:match MyCustomHighlight /\%(\s\+$\)\|\(\%>30v.\+\)/
:highlight MyCustomHighlight ctermbg=0 ctermfg=197
于 2013-10-19T11:46:38.967 に答える