【问题标题】:How to enumerate tabs in vim?如何枚举vim中的选项卡?
【发布时间】:2012-07-06 16:46:54
【问题描述】:

Vim 是一个非常高效的编辑器,我每天都喜欢使用它,但我发现在标签之间移动花费的时间比它应该的要多。

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

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

1 Readme | 2 main.c | 3 main.h | 4 process.h

我希望可以通过编辑配置或使用一些插件来配置 vim 来做到这一点。

有办法实现吗?

【问题讨论】:

  • 你可以在 ViM 中打开标签页?!每天你都会通过 ViM 学到新东西

标签: vim tabs


【解决方案1】:

您可以使用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()

【讨论】:

  • 谢谢,这正是我想要的!但是set tabline=%!MyTabLine() 应该添加到您的示例的最底部,否则整个事情将无法正常工作。
  • 哦,是的,应该添加。我会把它放到答案中
【解决方案2】:

如果您使用的是gvim

set guitablabel=(%N)\ %t\ %M

输入 :help tabline:help guitablabel 以了解更多信息。

文档中有function MyTabLine()

【讨论】:

  • 谢谢,但我正在使用 vim 和终端模拟器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2012-03-14
  • 2021-07-12
  • 1970-01-01
相关资源
最近更新 更多