Vim:在新选项卡中打开每个缓冲区

jos*_*gle 34 vim

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

:tabnew | b 1
Run Code Online (Sandbox Code Playgroud)

但我更喜欢更自动化的方法.

seh*_*ehe 51

要走的路是:

:tab sball
Run Code Online (Sandbox Code Playgroud)

从帮助:

"sball:重新排列屏幕,为缓冲区列表中的每个缓冲区打开一个窗口...当使用|:tab |修饰符时,新窗口将在新选项卡中打开,最多为'tabpagemax'."

没有|:tab | 修饰符,它在拆分视图中打开每个缓冲区.

:sball
Run Code Online (Sandbox Code Playgroud)

或者最多打开6个

:6sball
Run Code Online (Sandbox Code Playgroud)

等等


fes*_*ast 36

您可以为此命令分配映射:

:bufdo tab split
Run Code Online (Sandbox Code Playgroud)
  • 说明:
    • bufdo [command]将[command]应用于所有缓冲区
    • tab split获取当前缓冲区并用它打开一个选项卡

最后,要映射这个:

map ,bt :bufdo tab split<CR>
Run Code Online (Sandbox Code Playgroud)

招呼


les*_*eal 8

[我会评论上面接受的答案,但没有足够的重复点.]

对我来说,如果它们是以前从未查看过的缓冲区,则接受的答案将保留新选项卡而不显示语法.(要重现 - 选择一些XML文件,在Windows资源管理器中选择Edit with Single Vim,从那里尝试.)我不知道为什么会这样,所以我的解决方案就是再次打开语法高亮.

我也觉得很烦人,最后一个缓冲区最终有两个选项卡,所以我的解决方案是移动到最后一个选项卡并关闭它.

:bufdo tab split
:tablast
:tabclose
:syntax on
Run Code Online (Sandbox Code Playgroud)

所以在映射中,

:map ,bt :bufdo tab split<CR>:tablast<CR>:tabclose<CR>:syntax on<CR>
Run Code Online (Sandbox Code Playgroud)