解決
これは、黄色という単語だけに色を付けるための直接的な答えです。
syn cluster vimHiCtermColors contains=vimHiCtermColorYellow
syn keyword vimHiCtermColorYellow yellow contained
syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,@vimHiCtermColors,vimFgBgAttrib,vimHiCtermError
highlight vimHiCtermColorYellow ctermfg=yellow
そして、すべての色の端末名を色付けするための解決策があります。それらは (GUI ではなく) 端末でのみ色付けされ、他の属性 (256 色の端末、GUI の色、太字などの属性) はまったく強調表示されません。これをさらに拡張するには、何らかのスクリプトですべての可能な値を反復処理する必要があるでしょう。
syn cluster vimHiCtermColors contains=vimHiCtermColorBlack,vimHiCtermColorBlue,vimHiCtermColorBrown,vimHiCtermColorCyan,vimHiCtermColorDarkBlue,vimHiCtermColorDarkcyan,vimHiCtermColorDarkgray,vimHiCtermColorDarkgreen,vimHiCtermColorDarkgrey,vimHiCtermColorDarkmagenta,vimHiCtermColorDarkred,vimHiCtermColorDarkyellow,vimHiCtermColorGray,vimHiCtermColorGreen,vimHiCtermColorGrey,vimHiCtermColorLightblue,vimHiCtermColorLightcyan,vimHiCtermColorLightgray,vimHiCtermColorLightgreen,vimHiCtermColorLightgrey,vimHiCtermColorLightmagenta,vimHiCtermColorLightred,vimHiCtermColorMagenta,vimHiCtermColorRed,vimHiCtermColorWhite,vimHiCtermColorYellow
syn keyword vimHiCtermColorBlack black contained
syn keyword vimHiCtermColorBlue blue contained
syn keyword vimHiCtermColorBrown brown contained
syn keyword vimHiCtermColorCyan cyan contained
syn keyword vimHiCtermColorDarkBlue darkBlue contained
syn keyword vimHiCtermColorDarkcyan darkcyan contained
syn keyword vimHiCtermColorDarkgray darkgray contained
syn keyword vimHiCtermColorDarkgreen darkgreen contained
syn keyword vimHiCtermColorDarkgrey darkgrey contained
syn keyword vimHiCtermColorDarkmagenta darkmagenta contained
syn keyword vimHiCtermColorDarkred darkred contained
syn keyword vimHiCtermColorDarkyellow darkyellow contained
syn keyword vimHiCtermColorGray gray contained
syn keyword vimHiCtermColorGreen green contained
syn keyword vimHiCtermColorGrey grey contained
syn keyword vimHiCtermColorLightblue lightblue contained
syn keyword vimHiCtermColorLightcyan lightcyan contained
syn keyword vimHiCtermColorLightgray lightgray contained
syn keyword vimHiCtermColorLightgreen lightgreen contained
syn keyword vimHiCtermColorLightgrey lightgrey contained
syn keyword vimHiCtermColorLightmagenta lightmagenta contained
syn keyword vimHiCtermColorLightred lightred contained
syn keyword vimHiCtermColorMagenta magenta contained
syn keyword vimHiCtermColorRed red contained
syn keyword vimHiCtermColorWhite white contained
syn keyword vimHiCtermColorYellow yellow contained
syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,@vimHiCtermColors,vimFgBgAttrib,vimHiCtermError
highlight vimHiCtermColorBlack ctermfg=black
highlight vimHiCtermColorBlue ctermfg=blue
highlight vimHiCtermColorBrown ctermfg=brown
highlight vimHiCtermColorCyan ctermfg=cyan
highlight vimHiCtermColorDarkBlue ctermfg=darkBlue
highlight vimHiCtermColorDarkcyan ctermfg=darkcyan
highlight vimHiCtermColorDarkgray ctermfg=darkgray
highlight vimHiCtermColorDarkgreen ctermfg=darkgreen
highlight vimHiCtermColorDarkgrey ctermfg=darkgrey
highlight vimHiCtermColorDarkmagenta ctermfg=darkmagenta
highlight vimHiCtermColorDarkred ctermfg=darkred
highlight vimHiCtermColorDarkyellow ctermfg=darkyellow
highlight vimHiCtermColorGray ctermfg=gray
highlight vimHiCtermColorGreen ctermfg=green
highlight vimHiCtermColorGrey ctermfg=grey
highlight vimHiCtermColorLightblue ctermfg=lightblue
highlight vimHiCtermColorLightcyan ctermfg=lightcyan
highlight vimHiCtermColorLightgray ctermfg=lightgray
highlight vimHiCtermColorLightgreen ctermfg=lightgreen
highlight vimHiCtermColorLightgrey ctermfg=lightgrey
highlight vimHiCtermColorLightmagenta ctermfg=lightmagenta
highlight vimHiCtermColorLightred ctermfg=lightred
highlight vimHiCtermColorMagenta ctermfg=magenta
highlight vimHiCtermColorRed ctermfg=red
highlight vimHiCtermColorWhite ctermfg=white
highlight vimHiCtermColorYellow ctermfg=yellow
説明
colors/vim.vimを調べて を検索するとcterm
、次の行が表示されます。
syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
これは、ctermfg=
orctermbg=
が検出された場合、次の単語をvimNumber
、vimHiCtermColor
、vimFgBgAttrib
、またはとして強調表示することを示していvimHiCtermError
ます。vimHiCtermColor
(上の数行)を見ると、
syn keyword vimHiCtermColor contained black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
これにより、すべてのカラー ターミナル名が一覧表示され、同じ構文グループのキーワードとして強調表示されます。したがって、それらをまとめて強調表示する代わりに、個別に強調表示することができます。上記の最初のソリューションの 4 行は、次の手順を説明しています。
@vimHiCtermColors
ステップ 2 の各グループを含む新しいクラスターを作成します。
- 色の値ごとに新しいキーワードを追加します。
- の代わりに
vimHiCtermFgBg
使用する定義を変更します。@vimHiCtermColors
vimHiCtermColor
- 必要に応じて各キーワードをハイライトします。
試したことがうまくいかなかった理由は 2 つあります。まず、 で指定された構文グループは、一般的なグループ (特にnextgroup
あなたのグループ) よりも優先されます。yellow
しかし、あなたは「どうcontainedin=ALL
ですか?」と言うかもしれません。これが 2 番目のポイントです。キーワードは個々の単位であり、それ以外のものを含めることはできません。元のvimHiCtermColor
グループはすべてキーワードだったので、containedin=ALL
上書きできませんでした。vimHiCtermColor
キーワードではなく一致していた場合は、機能していた可能性があります。