2010-03-14 27 views

回答

5

這是不可能的內置語法。

let UglyColor = '#40ffff' 
let Greenish = '#00dd00' 
let MyStyle = 'bold' 
exe 'hi Keyword gui=' . MyStyle . ' guifg=' . UglyColor 
exe 'hi Comment guifg=' . Greenish 

然後,您可以通過創建一個字典借此進一步:

let UglyColor = '#40ffff' 
let Greenish = '#00dd00' 
let ColourAssignment = {} 
let ColourAssignment['Keyword'] = {"GUIFG": UglyColor, "GUI": "Bold"} 
let ColourAssignment['Comment'] = {"GUIFG": Greenish} 

,然後再處理它是這樣的:

但是,它可以,如果你讓你自己的語法來完成
for key in keys(ColourAssignment) 
    let s:colours = ColourAssignment[key] 
    if has_key(s:colours, 'GUI') 
     let gui = s:colours['GUI'] 
    else 
     let gui='NONE' 
    endif 
    if has_key(s:colours, 'GUIFG') 
     let guifg = s:colours['GUIFG'] 
    else 
     let guifg='NONE' 
    endif 
    if has_key(s:colours, 'GUIBG') 
     let guibg = s:colours['GUIBG'] 
    else 
     let guibg='NONE' 
    endif 
    if key =~ '^\k*$' 
     execute "hi ".key." term=".term." cterm=".cterm." gui=".gui." ctermfg=".ctermfg." guifg=".guifg." ctermbg=".ctermbg." guibg=".guibg." guisp=".guisp 
    endif 

這就是my Bandit colour scheme的工作原理(在那裏有更多的邏輯用於自動生成cterm顏色,淺色背景顏色和語法文件,以便顏色方案自我highl ights)。隨意看看那個,竊取您自己的配色方案的功能和格式。