在VIM中打开缓冲区作为垂直拆分

alf*_*eza 167 vim

如果您正在VIM中编辑文件,然后需要打开现有缓冲区(例如,从缓冲区列表中)::buffers如何在垂直拆分中打开它?

我知道你已经可以通过正常分割打开它,如:

:sbuffer N
Run Code Online (Sandbox Code Playgroud)

Wehere N是您想要的缓冲区编号,但是,上面打开N缓冲区水平而不是垂直.

我也知道你可以在打开后更改窗口位置,并像这样进行垂直分割:

Ctrl-W H
Ctrl-W L
Run Code Online (Sandbox Code Playgroud)

这会将窗口垂直分割为右侧或左侧.

在我看来,如果有一个sbuffer应该有一个,vsbuffer但不存在(不是我知道)

此外,请注意我不是在寻找一个插件来解决这个问题.我知道有很多插件可以让你这样做.

我相信我可能会遗漏已经存在的东西.

编辑:在最好的合作精神,我已经创建了一个简单的功能与映射如果其他人偶然发现这个问题,并且不想安装插件:

功能:

" Vertical Split Buffer Function
function VerticalSplitBuffer(buffer)
    execute "vert belowright sb" a:buffer 
endfunction
Run Code Online (Sandbox Code Playgroud)

制图:

" Vertical Split Buffer Mapping
command -nargs=1 Vbuffer call VerticalSplitBuffer(<f-args>)
Run Code Online (Sandbox Code Playgroud)

这完成了在右侧拆分中打开缓冲区的任务,因此对于缓冲区1,您可以将其称为:

:Vbuffer 1
Run Code Online (Sandbox Code Playgroud)

Jee*_*eet 191

尝试:

:vert sb N
Run Code Online (Sandbox Code Playgroud)

这将打开左侧垂直分割(默认情况下,除非您修改了一些选项).

另一方面,要向右打开分割:

:vert belowright sb N
Run Code Online (Sandbox Code Playgroud)

  • 我总觉得应该有一个`vsbuffer`,我也常常忘记`Ctrl-w T`在新标签中打开一个缓冲区(或者我想用一个当前不活动或不可见的缓冲区来做).所以作为替代方案,你可以使用一个条形作为这些情况中的任何一个,我发现比@ Jeet的有效答案更容易记住:`:vsp | b N`和`:tabe | b N`. (12认同)
  • 没有``vsbuffer N``似乎并不奇怪?烦人.你的回答是钉在它上面 谢谢! (5认同)

Jer*_*naw 116

:vsp | b1

1是一些缓冲区号.使用buffers列出所有缓冲区.

如果您有兴趣,可以参考以下有关拆分的其他信息. 链接

  • 你也可以使用`:ls`,这似乎是`:buffers`的捷径. (9认同)
  • @KennyBambridge甚至更好 - 您只需键入缓冲区名称的一部分(区分大小写),然后单击选项卡以循环筛选列表 (4认同)
  • 你也可以做`:vsp | b <缓冲区名称>` (3认同)

小智 6

您可以通过将以下内容添加到您的 .vimrc 来减轻您的痛苦

cabbrev vb vert sb
Run Code Online (Sandbox Code Playgroud)

现在您可以通过以下方式使用它。

:vb <buffer>
Run Code Online (Sandbox Code Playgroud)


Dan*_*uah 5

我发现最有用的 OP 答案深深地嵌入在 Je​​rinaw 的答案及其评论中,以及 Wolfson 的答案中。但我觉得它可能会被带出更多。(这些人也没有得到最高的投票,尽管在我看来他们是回答 OP 最好的人。)

为什么没有:vsbuffer,这个问题的答案是有。它被称为:vsplit并且可以作为

:vsplit NameOfBuffer

或者

:vsplit #NumberOfBuffer.

(在第二次使用中,请注意哈希 # 很重要。如果您想到达缓冲区编号 3,您需要说:vsplit #3,而不仅仅是:vsplit 3这将创建一个名为“3”的新文件。)

同样,这个答案嵌入在上面,它对于快速扫描仪 IMV 来说还不够清楚。