2011-08-30 38 views
26

vimのタブバーの色を変更するには?vimのタブバーの色をカスタマイズする

私は「N」が意味を、これは私がグーグルから収集するために管理しているすべての色にタブバーの背景の色を変更し

:hi TabLineFill ctermbg=N 

を使用して試してみました。私は:help cterm-colorsを見ましたが、私はそれ以上の理解は得られませんでした。

このハイライト機能を使用して、アクティブなタブのフォアグラウンドとバックグラウンド、および非アクティブなタブのフォアグラウンドとバックグラウンドの色を変更できますか?もしそうなら、私はこれをどうやってやりますか?

答えて

38

あなたは、例えば、以下の操作を行うことができます項目の変更のどのような各強調するために選ばれた

:hi Title ctermfg=LightBlue ctermbg=Magenta 

派手な色:

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

をこの行は、タブごとにウィンドウカウンタに影響を与えます。

highlightingで再生すると、$VIMRUNTIME/colors/*.vimを見ると本当に役に立ちます。

これらは、コンソールで実行中のVimの色を変更することに注意してください。 GVimの色を変更する場合は、guibg,guifg,等、を使用する必要があります。例:

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

タブが選択されているときに、タブごとにウィンドウカウンタのスタイルを設定しますか? – jviotti

7

はい、そうです。 TabLineTabLineSelTabLineFill

は、あなたの好みに合わせてカスタマイズすることができますタブラインにおける三つの項目があります。

TabLineSel - 現在の(つまり、)アクティブなタブラベルです。
TabLine - 現在アクティブではないラベルです。
TabLineFill - ラベル(背景)がないタブラインの残りの部分です。

通常の方法で3つすべてを変更します。

3

'tabline'オプションは、タブページのラベルがどのように表示されるかを指定します。 GUIタブラインがない場合にのみ使用されます。

タブページラベルを含む行をいつ表示するかを指定するには、 'showtabline'オプションを使用します。複数のタブページがある場合は常に表示されません。また、 が常に表示されます。

タブページの行のハイライト表示は、TabLine TabLineSelおよびTabLineFillというグループで設定されます。| hl-TabLine | | hl-TabLineSel | | hl-TabLineFill |

変更されたウィンドウを持つタブページの "+"が表示されます。タブページ内の ウィンドウの数も表示されます。したがって、「3+」は3つのウィンドウを意味し、 のうちの1つは変更されたバッファを有する。

[tabline]オプションを使用すると、タブページ のラベルに優先する方法を定義できます。これは簡単ではないので、例をここに示します。

基本については、 'statusline'オプションを参照してください。 の[tabline]オプションでも同じ項目を使用できます。さらに、| tabpagebuflist()|、| tabpagenr()|および | tabpagewinnr()|関数が便利です。

タブラベルの数が異なるため、 の式を使用する必要があります。 > :set tabline =%!MyTabLine()

次に、MyTabLine()関数を定義して、すべてのタブページのラベルを表示します。 A 便利な方法は、2つの部分に分割することです。まず、すべてのタブ のタブを開き、それらのラベルを定義します。次に、各タブページのラベルを取得します。 >

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

コピー貼り付け。これは悪い答えではありません。 – Kvass

関連する問題