2012-11-24 99 views
2

我在vim中使用molokai來在python/html/css/javascript中編碼。當我編輯python文件(或javascript)括號時沒有着色。對於簡單的腳本(如molokai.vim本身),這是不正確的,括號中的內容是灰色的。如何使用molokai在vim中爲括號和括號添加顏色

我編輯molokai.vim並添加

hi parens guifg=#999999 

,然後我編輯.vimrc並補充說:

syn match parens /[(){}]/ 

但括號和括號保持白色。

我在做什麼錯?

回答

3
  1. 千萬不要使用:syn來突出顯示所有文件類型,這裏有matchadd()。使用:syn可以輕鬆突破突出顯示,matchadd()是疊加層。
  2. 當事件觸發Syntax事件時,正在覆蓋語法突出顯示。更多,它只對當前緩衝區有效。因此,只要在syn會的vimrc絕不工作,你必須使用自動命令

    autocmd! Syntax python :syntax match Parens /[(){}]/ 
    

    (對於Python是安全的,因爲括號和數字括號不被任何其他語法元素匹配)。

  3. 在javascript括號中(())已經被javaScriptParens高亮組匹配。因此,您必須使用

    hi def link javaScriptParens Parens 
    

    (in colorscheme)。大括號匹配javaScriptBraces並且需要類似的命令。

  4. 要確定使用什麼突出的特定符號,我把光標放在這個符號,並啓動

    echo 'Normal '.join(map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')) 
    

    ,最後顯示的詞通常是你所需要的。如果只有Normal則顯示符號不突出,你必須去2,否則你必須去3.

  5. 對於通用的解決方案忽視當前使用的高亮顯示您可以使用matchadd()因爲我已經說過。但它是局部於窗口,所以如果你正在使用多個窗口/標籤的工作,你不能沒有自動命令去:

    autocmd! WinEnter * :if !exists('w:parens_match_id') | let w:parens_match_id=matchadd('Parens', '[(){}]') | endif 
    

所有自動命令與

augroup HighlightParens 
    autocmd! … 
augroup END 
包圍