是否可以更改vim中每个文件类型的选项卡标题颜色?

是否可以更改vim中每个文件类型的选项卡标题颜色?,vim,Vim,如果我打开.js、.html、.rb和其他文件类型,是否可以更改每个文件类型的选项卡颜色? Tab表示vim的Tab不喜欢空格。您必须编写自己的:help'tabline'(另请参见:help'statusline')及其所有支持代码 拥有不同的颜色是最简单的部分: :set tabline=%#Error#\ foo.js\ %*%#DiffAdd#\ bar.rb\ %*%#Search#\ baz.scss\ %* 代码将决定各种事件的正确表行值,这一点都不无关紧要。使用格式%\Str

如果我打开.js、.html、.rb和其他文件类型,是否可以更改每个文件类型的选项卡颜色?
Tab表示vim的Tab不喜欢空格。

您必须编写自己的
:help'tabline'
(另请参见
:help'statusline'
)及其所有支持代码

拥有不同的颜色是最简单的部分:

:set tabline=%#Error#\ foo.js\ %*%#DiffAdd#\ bar.rb\ %*%#Search#\ baz.scss\ %*

代码将决定各种事件的正确
表行
值,这一点都不无关紧要。

使用格式
%\String
将用字符串高亮显示:
-
set tabline=%#String\toto

要放入vimrc的脚本:

当您根据文件类型要求颜色高亮度时,必须获得缓冲区的文件类型:
-
让s_type=getbufvar(i_缓冲区,&filetype')

为此,必须在选项卡中获取activer缓冲区的缓冲区编号:
-
let i_window=tabpagewinner(i)

-
让l_buffer=tabpagebuflist(i)

-
让i\u buffer=l\u buffer[i\u window-1]

然后,您必须明智地使用if区分文件类型。因此,您肯定希望在函数中隐藏所有这些:
set tabline=%!TabTest()

更多信息:
h小报


h statusline

我无法回答您的问题,但我建议您阅读一下
function! TabTest()
  let res = ''

  for i in range(tabpagenr('$'))
    let i += 1
    " Get open buffer
    let i_window = tabpagewinnr(i)
      let l_buffer = tabpagebuflist(i)
    let i_buffer = l_buffer[i_window - 1]

    " Get type
    let s_type = getbufvar(i_buffer, '&filetype')

    " Set color according to filetype
    let s_color = ''
    if i == tabpagenr()
      let res .= '%#TabLine#'
    elseif 'javascript' == s_type
      let res .= '%#String#'
    elseif 'html' == s_type
      let res .= '%#Comment#'
    else 
      let res .= '%#Normal#'
    endif

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

    " Set label text
      let s_buffer = bufname(i_buffer)
    try
      let s_file = split(s_buffer, '/')[-1]
    catch
      let s_file = '[No Name]'
    endtry
      let res .= ' ' . s_file
  endfor

  return res
endfunction

set tabline=%!TabTest()