Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <h2>Solution</h2> <p>Here's a direct answer for coloring just the word yellow.</p> <pre><code>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 </code></pre> <p>And here's a solution for coloring all the color terminal names. They are only colored in the terminal (not the GUI), and other attributes (256-color terminal, GUI colors, attributes such as bold) are not highlighted at all. To extend this further, you'd probably want some sort of script to iterate over all the possible values.</p> <pre><code>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 </code></pre> <h2>Explanation</h2> <p>If you look in <em>colors/vim.vim</em> and search for <code>cterm</code>, you'll see a line</p> <pre><code>syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError </code></pre> <p>This says that, when <code>ctermfg=</code> or <code>ctermbg=</code> is encountered, highlight the next word as <code>vimNumber</code>, <code>vimHiCtermColor</code>, <code>vimFgBgAttrib</code>, or <code>vimHiCtermError</code>. Looking at <code>vimHiCtermColor</code> (a few lines above), we see</p> <pre><code>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 </code></pre> <p>This lists all of the color terminal names, and they are highlighted as keywords with the same syntax group. So, instead of highlighting them all together, we can highlight them separately. The four lines of the first solution above describe the steps:</p> <ol> <li>Create a new cluster, <code>@vimHiCtermColors</code> containing each of the groups in step 2.</li> <li>Add a new keyword for each color value.</li> <li>Modify the <code>vimHiCtermFgBg</code> definition to use <code>@vimHiCtermColors</code> instead of <code>vimHiCtermColor</code>.</li> <li>Highlight each keyword as you wish.</li> </ol> <p>The reason why what you tried did not work is twofold. First, the syntax groups specified in the <code>nextgroup</code> are preferred over general groups (your <code>yellow</code> group, in particular). But, you may say, "What about <code>containedin=ALL</code>?" This is the second point. Keywords are individual units and cannot contain anything else. The original <code>vimHiCtermColor</code> group was all keywords, so your <code>containedin=ALL</code> could not override it. If <code>vimHiCtermColor</code> had been a match instead of a keyword, it may have worked.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload