2011-12-05 52 views
3

我已成功設置我的linestatus配置。但是,唯一缺少的是一些背景顏色,無論是整行以及特定元素。我如何設置它們?更改vim的linestatus顏色

+1

看看[這裏](http://stackoverflow.com/questions/5375240/a-more-useful-statusline-in-vim/5380230#5380230)例如 – Tassos

回答

4

您需要定義的顏色作爲新的高亮組用戶1,用戶2等:

hi User1 ctermbg=blue ctermfg=white guibg=blue guifg=white 
hi User2 ctermbg=black ctermfg=red  guibg=black guifg=red 

然後,您可以在狀態字符串指定它們像這樣:

set statusline= 
set statusline+=%1* " Switch to colour User1 
set statusline+=%F 
set statusline+=%* " Switch to default colour 
set statusline+=%P 
set statusline+=%2* " Switch to colour User2 
set statusline+=%c 

編輯

這可能屬於一個新問題,但這裏是我用來查找高亮組的現有着色的方法。在這個例子中,我將Folded語法設置爲與當前的Normal語法相同。我通過將hi Normal的輸出指向一個變量,然後從中提取各種信息來做到這一點。

redir => hinorm 
sil exe 'hi Normal' 
redir END 
if hinorm =~ 'cleared' 
    sil exe 'hi clear Folded' 
else 
    let guibg = matchstr(strtrans(hinorm),'guibg=[#a-zA-Z0-9]*') 
    let guifg = matchstr(strtrans(hinorm),'guifg=[#a-zA-Z0-9]*') 
    sil exe 'hi Folded ' . guibg 
    sil exe 'hi Folded ' . guifg 
endif 

如果有更清潔的方法,讓我知道!

+0

通過任何改變,你設法找到一種方式知道Solarized或任何其他計劃正在使用的顏色,所以我可以以自動化的方式使用默認的fg和bg顏色? – josemota

+0

它可能屬於一個新的問題,但我已經添加了我的方法來查找當前的fg/bg顏色。希望能幫助到你。 –