我可以打开当前标签左侧的新标签吗?

时间:2012-11-07 18:06:40

标签: vim tabs customization

发布:tabnew somefile会在新标签页中打开somefile到当前标签的右侧。我可以以某种方式让Vim打开当前标签 left 的标签吗?

更新:建议的答案允许我打开一个新标签,但它们会中断文件名自动完成,这是不行的。

4 个答案:

答案 0 :(得分:9)

要利用@romainl描述的行为而不必诉诸于了解当前标签页编号,请使用以下命令:

command -nargs=* -bar Tabnew :execute (tabpagenr()-1).'tabnew '.<q-args>

。注意:完全保存使用0tabnew:即使没有标签页面的编号低于1,这样做也可以使新标签成为第一个标签页。

如果您确定从未对++opt+cmd使用此命令,则可以在-complete=file之后使用-bar。注意:除了它的名称之外,不是一个完成选项,因为它也是文件名扩展(并且在-nargs=1的情况下显示错误,并且在太多文件名中扩展了globs)。不幸的是,文档中甚至没有提到这种行为。

答案 1 :(得分:6)

Vim 7.4.530 (2014)起,您可以在[count]中使用:[count]tabnew的否定值来打开标签。要直接在当前选项卡的左侧打开选项卡,请使用:

:-1tabnew

文档:https://vimhelp.appspot.com/tabpage.txt.html#:tabnew

:[count]tabe[dit]                               :tabe :tabedit :tabnew
:[count]tabnew
                Open a new tab page with an empty window, after the current
                tab page.  If [count] is given the new tab page appears after
                the tab page [count] otherwise the new tab page will appear
                after the current one. 
                    :tabnew     " opens tabpage after the current one
                    :.tabnew    " as above
                    :+tabnew    " opens tabpage after the next tab page
                                " note: it is one further than :tabnew
                    :-tabnew    " opens tabpage before the current one
                    :0tabnew    " opens tabpage before the first one
                    :$tabnew    " opens tabpage after the last one

:tabclose:tabonly:tabmove也可以使用类似的功能,请参阅上面链接的提交。如果这不起作用,请使用:version检查您的Vim是否是最新的和/或使用:help tabnew检查文档是否与此处引用的文档类似。

答案 2 :(得分:3)

您可以使用[count]。假设您位于选项卡#4,:3tabnew在当前选项卡的左侧创建一个新选项卡。

请注意,标签总是创建在当前标签或标签#[count]的右侧。 :3tabnew实际上意味着“在标签#3后创建一个新标签。”

答案 3 :(得分:1)

您可以编写自己的命令来执行此操作

:command -nargs=1 TabnewBefore exec "tabnew <args>" | exec "tabmove -1"

然后使用它

:TabnewBefore somefile

如果您希望它成为默认的'tabnew'bahaviour,您可以

:ca tabne TabnewBefore

现在,如果您键入tabne并按命令行上的空格,它会执行您想要的操作,如果您希望原始行为类型为完整命令tabnew

您可以将这些定义放入.vimrc文件中以供将来使用