vim:移动到第n个下一个标签

时间:2014-09-01 10:41:51

标签: vim tabs navigation

我正在尝试改进不同标签之间的导航。我了解到可以使用

:tabn
:tabp

将当前标签更改为下一个和上一个标签。

我想做一些能够移动到第4个上一个或下一个标签的内容。但是,而

:4 tabp

工作正常,命令

:4 tabn

总是切换到第4(绝对)位置的标签。任何人都可以重现这种行为吗?什么可能导致这个?

2 个答案:

答案 0 :(得分:2)

我可以重现这种行为,它与文档匹配:

:tabn[ext]              *:tabn* *:tabnext* *gt*
<C-PageDown>                *CTRL-<PageDown>* *<C-PageDown>*
gt                  *i_CTRL-<PageDown>* *i_<C-PageDown>*
        Go to the next tab page.  Wraps around from the last to the
        first one.

:tabn[ext] {count}
{count}<C-PageDown>
{count}gt   Go to tab page {count}.  The first tab page has number one.



:tabp[revious] {count}
:tabN[ext] {count}
{count}<C-PageUp>
{count}gT   Go {count} tab pages back.  Wraps around from the first one
        to the last one.

但我之前没有注意到这一点,因为我使用这些命令而不计算。当我需要切换到不使用下一个或上一个的标签页时,我会使用{count}gt。为避免计算相应的标签,我使用了一些设置来显示标签标签上的数字 - 请参阅:help setting-tabline(如果使用gVim,请:help setting-guitablabel

答案 1 :(得分:2)

这种方法不一致,但有记录(参见@ mMontu的回答)。您可以使用映射更改此设置;例如,要覆盖gt以转到[count]下一个标签页而不是绝对标签页:

:noremap <expr> gt ':<C-U>' . (v:count > 1 ? (tabpagenr() + v:count - 1) % tabpagenr('$') + 1 : '') . 'tabnext<CR>'