2011-08-30 141 views
26

如何修改vim的標籤欄顏色?自定義vim的標籤欄顏色

我已經嘗試使用

:hi TabLineFill ctermbg=N 

這確實改變了標籤欄的背景到「N」表示該顏色的顏色,但是這是我設法從谷歌搜索來收集。我看了一下:help cterm-colors,但是我沒有從中得到更多的理解。

我可以使用這個高光設備來改變活動標籤的前景和背景以及非活動標籤的前景和背景的顏色嗎?如果是這樣,我將如何去做這件事?

回答

38

你可以做到以下幾點,例如:

:hi TabLineFill ctermfg=LightGreen ctermbg=DarkGreen 
:hi TabLine ctermfg=Blue ctermbg=Yellow 
:hi TabLineSel ctermfg=Red ctermbg=Yellow 

這條線會影響每個標籤窗口計數器:

:hi Title ctermfg=LightBlue ctermbg=Magenta 

選擇突出花哨的顏色各有什麼項目的變化。

我發現在看真的有幫助,當玩highlighting

請注意,這些改變了在控制檯中運行的Vim的顏色。如果您想更改GVim的顏色,則需要使用guibg,guifg,等等。例如:

:hi TabLineFill guifg=LightGreen guibg=DarkGreen ctermfg=LightGreen ctermbg=DarkGreen 
+1

如何選擇該選項卡時每個選項卡的窗口計數器的樣式? – jviotti

7

是的,你會的。

裏有耳線,可定製自己的喜好三個項目:TabLineTabLineSelTabLineFill分別指定

TabLineSel - 是當前(這麼說)活動標籤標籤。
TabLine - 是當前未激活的標籤。
TabLineFill - 是沒有標籤(背景)的標籤線的其餘部分。

您可以按通常的方式修改其中的三個。

3

'tabline'選項指定標籤頁標籤的外觀。 僅當沒有GUI選項卡行時才使用它。

您可以使用'showtabline'選項來指定何時顯示包含 標籤頁標籤的行:從不,當存在多個標籤頁或始終存在多個標籤頁時。

標籤頁行的突出顯示是使用TabLine TabLineSel和TabLineFill設置的。| HL-TabLine | | HL-TabLineSel | | HL-TabLineFill分別指定|

對於具有修改窗口的標籤頁,將顯示「+」。還顯示了頁面中的 窗口的數量。因此「3+」意味着三個窗口並且其中一個具有修改的緩衝區。

'tabline'選項允許您定義標籤頁 標籤的首選方式。這並不容易,因此這裏給出一個例子。

有關基本信息,請參閱'statusline'選項。可以在 'tabline'選項中使用相同的項目。此外,| tabpagebuflist()|,| tabpagenr()|和 | tabpagewinnr()|功能很有用。

由於選項卡標籤的數量會有所不同,因此您需要使用整個選項的表達式來表示 。例如:> :set tabline =%!MyTabLine()

然後定義MyTabLine()函數以列出所有標籤頁標籤。 A 方便的方法是將其分爲兩部分:首先瀏覽所有選項卡 頁面併爲它們定義標籤。然後獲取每個標籤頁的標籤。 >

function MyTabLine() 
    let s = '' 
    for i in range(tabpagenr('$')) 
    " select the highlighting 
    if i + 1 == tabpagenr() 
     let s .= '%#TabLineSel#' 
    else 
     let s .= '%#TabLine#' 
    endif 

    " set the tab page number (for mouse clicks) 
    let s .= '%' . (i + 1) . 'T' 

    " the label is made by MyTabLabel() 
    let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' 
    endfor 

    " after the last tab fill with TabLineFill and reset tab page nr 
    let s .= '%#TabLineFill#%T' 

    " right-align the label to close the current tab page 
    if tabpagenr('$') > 1 
    let s .= '%=%#TabLine#%999Xclose' 
    endif 

    return s 
endfunction 

現在爲每個標籤頁調用MyTabLabel()函數來獲取其標籤。 >

function MyTabLabel(n) 
    let buflist = tabpagebuflist(a:n) 
    let winnr = tabpagewinnr(a:n) 
    return bufname(buflist[winnr - 1]) 
endfunction 

這僅僅是一個簡單的例子,結果在一個標籤頁行該 類似於默認,但不添加用於+改性緩衝器或 截斷名稱。在沒有足夠空間時,您會希望以巧妙的方式減少標籤的寬度。檢查 可用空間的'列'選項。

+1

lol文字複製粘貼。並不是說這是一個不好的答案。 – Kvass