如何定义我自己的高亮颜色与vim中的matchadd()一起使用?

时间:2011-08-04 11:36:54

标签: vim macvim

我最近为.vimrc

找到了this little piece of code
if has("autocmd")
  " Highlight TODO, FIXME, NOTE, etc.
  if v:version > 701
    autocmd Syntax * call matchadd('Todo',  '\W\zs\(TODO\|FIXME\|CHANGED\|XXX\|BUG\|HACK\)')
    autocmd Syntax * call matchadd('Debug', '\W\zs\(NOTE\|INFO\|IDEA\)')
  endif
endif

基本上,它允许我定义与不同突出显示匹配的关键字(Todo和Debug是颜色的名称)。

有没有办法可以定义自己的着色方案并给它们命名?具体我想要的是3个标签:TODO1,TODO2和TODO3。这个想法是TODO3的优先级低于TODO1,因此会以较浅的颜色突出显示。

如果我无法定义自己的着色,我在哪里可以找到我可以使用的颜色名称列表?

1 个答案:

答案 0 :(得分:1)

如果您不想使用默认主题颜色,可以使用以下解决方案:

" Define autocmd for some highlighting *before* the colorscheme is loaded
augroup VimrcColors
au!
  autocmd ColorScheme * highlight ExtraWhitespace ctermbg=darkgreen guibg=#444444
  autocmd ColorScheme * highlight Tab             ctermbg=darkblue  guibg=darkblue
augroup END

之后(必须之后):

" Load color scheme
colorscheme yourscheme

颜色定义遵循以下格式:

autocmd ColorScheme * highlight <ColorName> ctermbg=<TerminalBackgroundColour> guibg=<GuiBackgroundColour> ctermfg=<TerminalFontColor> guifg=<GuiFontColour>

cterm颜色必须来自预定义列表(有关详细信息,请参阅:help cterm-colors)。 Gui颜色可以是任何Hex颜色。