Vimのタブバーの色をどのように変更しますか?
私は使ってみました
:hi TabLineFill ctermbg=N
これにより、タブバーの背景の色が「N」が示す色に変わりますが、これがグーグルから収集したすべてです。 :help cterm-colors
、しかし私はそれからあまり理解を得ることができませんでした。
このハイライト機能を使用して、アクティブなタブの前景と背景、および非アクティブなタブの前景と背景の色を変更できますか?もしそうなら、私はこれをどうやってやりますか?
たとえば、次のことができます。
:hi TabLineFill ctermfg=LightGreen ctermbg=DarkGreen
:hi TabLine ctermfg=Blue ctermbg=Yellow
:hi TabLineSel ctermfg=Red ctermbg=Yellow
この行は、タブごとのウィンドウカウンターに影響します。
:hi Title ctermfg=LightBlue ctermbg=Magenta
それぞれのアイテムの変化を強調するために選ばれた派手な色。
$VIMRUNTIME/colors/*.vim
を見ると、 highlighting で遊ぶときに本当に役立ちます。
これらはコンソールで実行されているVimの色を変更することに注意してください。 GVimの色を変更する場合は、guibg
、guifg
、et ceteraを使用する必要があります。例えば:
:hi TabLineFill guifg=LightGreen guibg=DarkGreen ctermfg=LightGreen ctermbg=DarkGreen
はい、そうです。
タブ行には、好みに応じてカスタマイズできる3つの項目があります:TabLine、TabLineSelおよびTabLineFill。
TabLineSel-現在の(いわば)アクティブなタブラベルです。
TabLine-現在アクティブではないラベルです。
TabLineFill-ラベルがない(背景)タブラインの残りの部分です。
3つすべてを通常の方法で変更します。
'tabline'オプションは、タブページラベルのある行がどのように見えるかを指定します。 GUIタブ行がない場合にのみ使用されます。
'showtabline'オプションを使用して、タブページラベルが付いた行を表示するタイミングを指定できます。タブページが複数ある場合、または常に表示することはできません。
タブページ行の強調表示は、TabLine TabLineSelおよびTabLineFillグループで設定されます。 | hl-TabLine | | hl-TabLineSel | | hl-TabLineFill |
ウィンドウが変更されているタブページには、「+」が表示されます。タブページのウィンドウ数も表示されます。したがって、「3+」は3つのウィンドウを意味し、そのうちの1つには変更されたバッファがあります。
「タブライン」オプションを使用すると、タブページラベルの優先方法を定義できます。これは簡単ではないので、ここで例を示します。
基本については、 'statusline'オプションを参照してください。同じ項目を「タブライン」オプションで使用できます。さらに、| tabpagebuflist()|、| tabpagenr()|および| tabpagewinnr()|関数は便利です。
タブラベルの数は異なるため、オプション全体に式を使用する必要があります。次のようなもの:>:set tabline =%!MyTabLine()
次に、すべてのタブページラベルを一覧表示するMyTabLine()関数を定義します。便利な方法は、それを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
これは、デフォルトに似たタブページ行になる単純な例にすぎませんが、変更されたバッファーに+を追加したり、名前を切り捨てたりしていません。十分なスペースがない場合は、賢い方法でラベルの幅を小さくする必要があります。使用可能なスペースについては、「列」オプションを確認してください。