18

发行:tabnew somefile将在当前选项卡右侧somefile的新选项卡中打开。我能以某种方式让 Vim 打开当前选项卡左侧的选项卡吗?

更新:建议的答案确实允许我在左侧打开一个新选项卡,但它们会破坏文件名自动完成,这是不行的。

4

4 回答 4

18

Vim 7.4.530 (2014) 开始,您可以使用负值[count]in:[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,请参阅上面链接的提交。如果这不起作用,请用于检查您的 Vim 是否是最新的和/或用于检查文档是否与此处引用的文档相似。:tabonly:tabmove:version:help tabnew

于 2016-08-11T03:08:37.077 回答
9

要利用@romainl 描述的行为而不必求助于知道当前标签页号,请使用以下命令:

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

. 注意:它完全可以保存使用0tabnew:即使没有数字低于 1 的标签页,它也能达到预期目的并使新标签页成为第一个标签页。

如果你确定你永远不会使用这个命令,++opt或者+cmd你可以-complete=file-bar. 注意:除了它的名称之外,它不是一个完成选项,因为它也可以进行文件名扩展(并显示错误以防万一-nargs=1和 glob 以太多文件名扩展)。不幸的是,文档中甚至没有提到这种行为。

于 2012-11-07T18:33:32.270 回答
3

您可以使用[count]. 假设您在标签 #4,:3tabnew在当前标签的左侧创建一个新标签。

但请记住,选项卡始终创建在当前选项卡或选项卡 # 的右侧[count]。实际上意味着“在标签 #3之后:3tabnew创建一个新标签”。

于 2012-11-07T18:25:47.990 回答
1

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

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

然后使用它

:TabnewBefore somefile

如果您希望它成为默认的“tabnew”行为,您可以这样做

:ca tabne TabnewBefore

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

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

于 2012-11-07T18:33:00.647 回答