2011-08-04 20 views
3

我最近發現this little piece of code.vimrc如何定義我自己的突出顯示顏色與vim中的matchadd()一起使用?

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 

基本上,它可以讓我定義這是與不同的高亮(待辦事項和調試是顏色的名稱)匹配的關鍵字。

有沒有一種方法可以定義我自己的着色方案並給出它們的名稱?特別是我想要的是3個標籤:TODO1,TODO2和TODO3。我們的想法是,TODO3的優先級低於TODO1,因此以較淺的色調突出顯示。

如果我無法定義自己的着色,我可以在哪裏找到可以使用的顏色名稱列表?

+0

我回答了一個類似的問題,可以幫助你。它基本上告訴你如何定義你自己的匹配顏色(在你使用的任何顏色方案的頂部):http://stackoverflow.com/questions/6386085/vim-syntax-highlighting/6388100#6388100 – alfredodeza

回答

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)。桂色可以是任何十六進制顏色。

+2

你的'if!exists( 'var')|讓var = 1 | ... | endif'自然由'augroup vimrcColors |表示自動命令! | ... | augroup END'。它有一個好處,就是你不會被迫卸載一個變量並手動刪除自動命令以重新加載它們。 – ZyX

+0

感謝您的建議。有一天我看到了它,但我沒有得到好處。我會試試看! – Plouff

+0

@Plouff,謝謝你的回答。也許你可以用ZyX的建議進行編輯?我真的不明白他的意思。 –

相關問題