如何枚举vim中的选项卡?

lam*_*das 8 vim tabs

Vim是非常高效的编辑器,我喜欢每天都使用它,但我发现在标签之间移动需要花费更多时间.

当我想切换到另一个标签时,我经常重复gtgT多次.Vim提供了一种更好的方式来访问所需的选项卡 - n+ gt,其中n是选项卡号.但要使用它,您应首先计算标签号.如果打开十几个标签,很快就会变得无聊.

我认为枚举标签会很好.文件名前面每个选项卡上的单个数字,如下所示:

1 Readme | 2 main.c | 3 main.h | 4 process.h
Run Code Online (Sandbox Code Playgroud)

我希望通过编辑配置或使用一些插件来配置vim来实现这一点.

有没有办法实现它?

Chr*_*ndt 6

您可以使用该tabline选项在vim的控制台模式下设置选项卡的标签.请参阅帮助,:h setting-tabline其中还显示了一个非常基本的最小示例,您可以根据需要进行调整,例如,根据您的需要,我会使用以下内容:

fu! MyTabLabel(n)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
let string = fnamemodify(bufname(buflist[winnr - 1]), ':t')
return empty(string) ? '[unnamed]' : string
endfu

fu! 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'
    " display tabnumber (for use with <count>gt, etc)
    let s .= ' '. (i+1) . ' ' 

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

    if i+1 < tabpagenr('$')
        let s .= ' |'
    endif
endfor
return s
endfu
set tabline=%!MyTabLine()
Run Code Online (Sandbox Code Playgroud)