2015-05-03 88 views
2

我在vim中使用了一個語法文件,它定義了許多文件類型特定的語法關鍵字。要爲此類型的文件着色,我還爲共享目錄創建了一個colorscheme文件,它試圖突出顯示這些語法關鍵字,但是當我打開該擴展名的文件時,它們不會生效。在Vim中爲自定義語法關鍵字設置顏色?

我的彩色文件但不突出正常羣體,如NormalSpecialComment等同樣,當我嘗試將這些亮點命令我.vimrc文件,他們仍然沒有任何效果。但是,在vim中加載文件後,手動輸入高亮命令將按預期工作。

爲了使用在語法文件中定義的語法關鍵字,我需要做些特殊的事情嗎?我是否需要在我的.vimrc中指定我的語法文件&顏色文件的加載順序?

編輯:使用:scriptnames,我能夠看到我的自定義colorscheme文件加載很久之前的語法文件,實際上加載死亡最後。但是,我的.vimrc文件指定colorscheme CustomPersonal作爲最後一行,在syntax on之後。

+0

噢,不錯,這個伎倆。正如你所建議的那樣,我最終創建了'〜/ .vim/after/syntax/ .vim'文件,但是它只是一行'colorscheme CustomPersonal'。如果您將此作爲答案提交,我會標記它爲你! – bwerks

回答

1

當你第一次啓動Vim時,你的.vimrc將會運行;在文件加載之前,語法文件不會被應用,它聽起來像是覆蓋了你的設置。

取而代之,您可以將自定義配色方案置於~/.vim/after/syntax/<filetype>.vim而不是CustomPersonal.vim(或至少從那裏調用)。

另一種替代方法是將autocmd添加到您的.vimrc以響應合適的事件來源CustomPersonal.vim

+0

標記爲答案。謝謝!出於好奇,那麼關於autocmd和事件呢? – bwerks

+0

請參閱':h:au'。如果這些設置在其他地方被覆蓋並且您不確定其中的位置(例如,您可以在每次進入窗口時添加autocmd以更改某些設置),則這可以用於重新應用設置。但是這更笨拙! –

2

Vim有一個覆蓋語法組的內置機制,所以如果你做的一切都正確(即使在你的~/.vimrc),這應該工作。 @MatthewStrawbridge建議的解決方案可能會工作,但感覺不對,因爲colorschemes在Vim中是global,因此不應在ftplugin中指定。

這裏是壓倒一切的工作原理是:

大多數文件類型(如python)在Vim中附帶定義高亮組(看到他們通過:highlight)語法。這些特定的組(例如pythonFunction)然後是鏈接到一組默認組(:help highlight-groups,例如Identifier)。 A colorscheme然後提供用於默認組的前景/背景顏色和/或格式的組合,如粗體和斜體(分別用於終端,彩色終端和/或GVIM)。

高亮組→默認組→色+風格
pythonFunctionIdentifierterm=underline ctermfg=3 guifg=DarkCyan

所以,一組漂亮的配色是取悅你的個人品味,你可以選擇色彩方案。爲了調整某些特定的關聯,您可以更改高亮組到默認組的鏈接,例如,:

:hi link pythonFunction Special 

這已經可以在~/.vimrc中完成。只要語法腳本正確使用:hi def link,您建立的原始鏈接將被保留; def[ault]參數確保只有在沒有鏈接時纔會創建鏈接。