2011-03-30 57 views
31

我在想如何在新选项卡中打开vi(m)中的所有当前缓冲区。 我知道你可以编辑你的vimrc文件来做这样的事情,但我更希望能够在需要时运行一个命令。 我可以通过链接在新标签和开放缓冲区的命令,比如做手工:Vim:在新选项卡中打开每个缓冲区

:tabnew | b 1 

但我宁愿更自动化的方法。

回答

33

你可以指定一个映射到这个命令:

:bufdo tab split 
  • 解释:
    • bufdo [命令]应用[命令]于所有缓冲区
    • 选项卡拆分起飞当前缓冲区并打开它的标签

最后,映射这样的:

map ,bt :bufdo tab split<CR> 

迎接

45

要走的路是:

:tab sball 

从帮助:

“sball:重新排列屏幕,在缓冲区列表中为每个缓冲区打开一个窗口...当|:tab |时改性剂的新窗口在新标签页打开,超过“tabpagemax”“

没有|:标签|改性剂,它在拆分视图中打开每个缓冲区

:sball 

或打开。他们中的大多数6

:6sball 

+0

不要忘了隐约体育冠冕堂皇的“垂直球”分裂关于y轴。 – 2015-09-27 18:57:30

+0

一些vim命令确实变得非常有趣:) – sehe 2015-09-27 18:58:58

+0

出于某种原因':tab sball'也将我当前的选项卡分成5个不同的水平分割。奇怪的...... – sixtyfootersdude 2016-02-02 21:55:51

6

[我会评论上述接受的答案,但没有足够的代表处点。]

对我来说,如果接受的答案是没有语法突出显示的新选项卡,如果它们是以前从未查看过的缓冲区。 (重现 - 选择一些XML文件,选择在Windows资源管理器中使用Single Vim进行编辑,然后从中尝试。)我不知道为什么发生这种情况,所以我的解决方案只是再次打开语法高亮。

我也觉得最后一个缓冲区结束了两个选项卡,所以我的解决方案是移动到最后一个选项卡并关闭它。

:bufdo tab split 
:tablast 
:tabclose 
:syntax on 

所以在映射,

:map ,bt :bufdo tab split<CR>:tablast<CR>:tabclose<CR>:syntax on<CR>