Working with Vim highlight groups
Highlight groups are used in Vim to control how the user interface will look.
For example, to change the colour of highlighted search items, you would add
this line to your
~/.vimrc or colorscheme in
1 highlight Search ctermfg=0 ctermbg=226
This would make highlighted search items show up with a yellow background and black text (when running in a terminal). This allows customisation of everything you see on screen. However, given the breadth of customisation possible it can be difficult to figure out which groups apply to the particular item you want to change.
This function will show what groups are being applied. Add to your
place your cursor over the item in question, and press
<leader>sp to output
1 2 3 4 5 6 7 nmap <leader>sp :call <SID>SynStack()<CR> function! <SID>SynStack() if !exists("*synstack") return endif echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")') endfunc
For example, placing my cursor over a comment in a Ruby file gives this output.
1 ['rubyMultilineComment', 'rubyComment']
You can now change how Ruby comments look using these groups.
This should greatly help when modifying colorschemes.
It can also be very useful to see how all highlight groups look.
Whilst browsing the highlight help page recently (
:help highlight) I found
that you can output all groups currently active using a script that comes with
:so $VIMRUNTIME/syntax/hitest.vim will show something similar to
There are many more lines in the full output, but it should be clear that this is very useful when debugging colorschemes.
Vim colorschemes should now be easier to create and modify.