如何使打开新标签页成为默认选项?


10

当我打开vim多个文件(vim f1 f2 ...)时,如何使它们直接在选项卡中打开而不使用-p

我希望将shell行为与vim行为区分开,删除vim基于别名的别名等。这就是为什么我不想使用别名等的原因(因此,no -p)。

我敢肯定,已经在一些SE网站(例如SO)上询问了这个网站。但是,我无权判断哪种方法是最好的方法,因此我也希望就建议的方法为什么很好的问题做个说明。

对于链接的特定SO帖子:

  • 公认的答案是正确的tabpagemax=9999。称其为个人偏见,但我看到设置了一个很大的限制,并且我认为出了点问题(如果看到的话,我会觉得这种感觉chmod 777)。

    :au VimEnter * set tabpagemax=9999|sil tab ball|set tabpagemax&vim
    
  • 另一个答案导致一个额外的空选项卡被打开,同时更加简洁。

    :autocmd VimEnter * argdo tabedit
    

我希望得到一个没有打开额外选项卡并且没有将限制设置为较大值的答案(或解释为什么这不是一件坏事)。



@OrangeTux我本着吉尔斯的回答的精神发表了。但是,对于不愿投票的人,我想知道吉尔斯对链接到现有帖子的帖子会说些什么?
muru 2015年

@Carpetsmoker我没有看到您的评论更新。当您的会话往往:qa由于习惯而结束时,空白标签页并不是一个大问题。如果那是我唯一的优势,那我将与另一个优势并存,因为它似乎更简单。
muru 2015年

3
@muru WWGS?您是否有理由认为Stack Overflow的答案不令人满意?如果是这样,请在您的问题中进行解释。无论如何,请总结您问题中的SO答案。如果那导致问题包含自己的答案,请不要发布。
吉尔(Gilles)'所以

@Gilles更新。我没有发布实际的命令,您认为我应该发布吗?
muru 2015年

Answers:


4

经过一些试验,我发现这是最好的方法。它的行为应与vim -p

au VimEnter * if !&diff | tab all | tabfirst | endif

首先,在选项卡中tab all打开参数列表(:args)中的所有条目。参数列表是您在启动时传递给Vim的文件的列表。并且tabfirst确保第一个选项卡聚焦,而不是最后一个(这是可选的)。

如果已设置,我们将不执行任何操作&diff;如果是的话,我们正在使用vimdiffvim -d,我们想要有2个窗口而不是2个标签。

这个答案中,我还写了一些有关参数列表的内容tab all,可能对此很感兴趣。


有关其他解决方案的一些注意事项:

  • tab ball缓冲区列表(而不是参数列表)中的每个条目打开一个选项卡。“问题”是缓冲区列表可能在退出时保存在viminfo文件中,并在启动时恢复(如果%位于中'viminfo',默认情况下未启用)。因此,如果您只是键入vim它将打开那些文件。我认为这是不希望的,尽管我可以想象有人发现它有用。所以用你喜欢的。

  • set tabpagemax=9999不需要; 默认值为10,这应该没问题。如果需要,可以在vimrc中增加此值,但这9999是一个愚蠢的数字。如果使用-p,还将获得tabpagemax选项卡。因此,这应该尊重。请记住,这将在启动时打开(读取)缓冲区,因此它相当慢。

  • autocmd VimEnter * argdo tabedit就是同样的表达方式tab all。但是,不会清除初始缓冲区,因此您剩下该额外的选项卡(tab all替换所有选项卡)。要解决此问题,您需要Josh Petrie的答案中的解决方法。


2

我认为向您的用户添加这样的内容.vimrc可能会解决您的问题(但是,请注意,我实际上并未使用此功能,仅进行了最少的测试,在某些情况下可能会做一些奇怪的事情):

function! OpenArgumentsInTabs()
  ardo tabedit
  if tabpagenr("$") > 1
    tabclose
  endif
endfunction

autocmd VimEnter * call OpenArgumentsInTabs()

如前所述,argdo tabedit将为您留下一个空的额外标签。因此,您可以简单地自动关闭该选项卡。但是,您不能只调用tabclose未选中的选项,否则在没有参数或单个文件的情况下启动它时,vim会给您一个错误(您无法关闭最后一个选项卡)。相反,请检查选项卡的总数是否大于一个(这就是返回$原因tabpagenr),然后才需要关闭最后一个选项卡。


就是说,我觉得值得指出的是,vim的选项卡与其他编辑器的选项卡并不完全一样,在考虑如何在工作流程中使用选项卡时,请牢记这一点(您似乎已经意识到这一点,但是我希望为将来可能不会这样做的读者带来利益,以便他们可以自己做出决定。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.