0

我的 .vimrc 中有这个循环,以将选项卡标题显示为“1:File1.txt”或“2:File2.tx”等,但 tabpagenr('$') 和 tabpagenr() 总是返回 1 无论如何我打开了很多标签。我究竟做错了什么?

for t in range(tabpagenr('$'))
    if (t + 1) == tabpagenr()
       let &titlestring = t + 1 . ': '
    endif
endfor

let &titlestring .= expand("%:M")
    if &term == "screen" || &term == "xterm"
        set title
endif
4

2 回答 2

0

看起来您的示例代码中缺少一些位:您希望如何仅用这几行更改选项卡标签?

无论如何,不​​带参数,tabpagenr()返回当前选项卡的编号。由于您在循环期间始终位于同一个选项卡中,因此该函数始终返回相同的数字。

:help setting-tabline有一个例子,你读了吗?

于 2013-09-02T19:43:48.447 回答
0

您没有告诉我们您的代码在哪些事件上执行。如果你把它放在你的. 中~/.vimrc,它只会在 Vim 启动期间执行一次。您需要至少在每次标签页更改(即事件)时:autocmd更新,或者更好地使用选项中的表达式来持续评估它:'titlestring'TabEnter

:set titlestring=%{tabpagenr()}
于 2013-09-03T14:41:07.703 回答