我想知道如何在vi(m)中打开所有当前的缓冲区并在新标签页中显示。 我知道可以编辑vimrc文件来实现这样的功能,但我更愿意只在需要时运行命令。 我可以手动使用新建选项卡和打开缓冲区命令来完成:
:tabnew | b 1
但我更喜欢一种更自动化的方法。
我想知道如何在vi(m)中打开所有当前的缓冲区并在新标签页中显示。 我知道可以编辑vimrc文件来实现这样的功能,但我更愿意只在需要时运行命令。 我可以手动使用新建选项卡和打开缓冲区命令来完成:
:tabnew | b 1
但我更喜欢一种更自动化的方法。
最好的方法是:
:tab sball
从帮助中可以了解到:
"sball:重新排列屏幕,为缓冲区列表中的每个缓冲区打开一个窗口...当使用 |:tab| 修饰符时,会在新标签页中打开新的窗口,最多达到 'tabpagemax'。"
如果没有使用 |:tab| 修饰符,则会在分割视图中打开每个缓冲区。
:sball
或者最多打开其中的6个
:6sball
等等。
你可以将一个映射分配给这个命令:
:bufdo tab split
最后,将其映射:
map ,bt :bufdo tab split<CR>
问候[我本来想在上面接受的答案上发表评论,但是我没有足够的声望点数。]
对于我而言,如果它们是以前从未查看过的缓冲区,则上面接受的答案会使新标签页没有语法突出显示。(要复现 - 选择一些 XML 文件,在 Windows 资源管理器中选择 "使用单个 Vim 进行编辑",然后从那里尝试它。) 我不知道为什么会这样,所以我的解决方案就是再次打开语法突出显示。
我也发现最后一个缓冲区会有两个选项卡,这让我很烦恼,所以我的解决方案是转到最后一个选项卡并将其关闭。
:bufdo tab split
:tablast
:tabclose
:syntax on
因此在映射中,
:map ,bt :bufdo tab split<CR>:tablast<CR>:tabclose<CR>:syntax on<CR>
:tab sball
命令也将当前标签页分成了5个不同的水平分割。很奇怪... - sixtyfootersdude:tab
命令之前已经将窗口分割了(这可能发生在脚本/命令行中)。 - sehe