強調表示コマンドは、以前に宣言された強調表示をリセットします


7

私はvimで強調表示を調整しようとしています。matchコマンドを使用して構文グループを設定し、vimrcファイルでそれらを強調表示しようとしています。これらのグループは汎用であり、特定の言語構文ファイルに属していないためです。

しかし、私のアプローチは単一の強調表示に対してのみ機能しhighlight/match、以前に宣言されたもののペアの別のインスタンスを追加するとすぐに機能せず、別のを追加するまで最後のインスタンスのみが機能しhighlight/matchます。

これは私のvimrcのコード(関連部分)です。この例は機能します:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/

そして、これはしません(最後のペアだけがしませんhi/match):

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
match WhiteSpaceChar / /

誰かがこれで私を助けることができますか、それをどのように機能させるか?

回答:


8

から :help :match

:matchを使用した一致の強調表示は、3つの
一致に制限されています(:match、:2match、:3matchを除く
)。matchadd()にはこの制限がなく、
さらに一致の優先順位を付けることができます。

だからあなたは使うことができます:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
2match WhiteSpaceChar / /

または:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
call matchadd("WhiteSpaceChar", " ")

matchadd()また、一致の削除や優先順位付けなど、柔軟性をさらに高めます。詳細については:help matchadd()、を参照してください。

または、構文の強調表示を調べます。 :help syntax


3

使用についてはどうですか

:sy [ntax] {グループ名} [{オプション}] [excludenl] {パターン} [{オプション}]に一致

:hi NewLineWin ctermfg=248 guifg=#999999
:syntax match NewLineWin /\r\n/
:hi WhiteSpaceChar ctermfg=252 guifg=#999999
:syntax match WhiteSpaceChar / /

あなたはそのようなマッチをいくつでも使うことができます...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.