在 VIM 中以垂直拆分方式打开缓冲区

如果你在 VIM 中编辑一个文件,然后你需要打开一个现有的缓冲区(例如从你的缓冲区列表: :buffers) ,你怎么能打开它在一个垂直分割?

我知道你已经可以用 正常分割来打开它了,比如:

:sbuffer N

如果 N是您想要的缓冲区编号,那么上面的命令将水平打开该 N缓冲区,而不是垂直打开。

我也知道你可以改变窗口的位置后,打开和有一个垂直分裂像这样:

Ctrl-W H
Ctrl-W L

将窗口垂直向左或向右分割。

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

另外,请注意,我不是在寻找一个插件来解决这个问题。我知道大量的插件可以让你做到这一点。

我确信我可能错过了一些已经存在的东西。

编辑: 本着最好的协作精神,我创建了一个简单的具有 Mapping 的函数,如果其他人碰巧发现这个问题并且不想安装插件:

功能:

" Vertical Split Buffer Function
function VerticalSplitBuffer(buffer)
execute "vert belowright sb" a:buffer
endfunction

测绘:

" Vertical Split Buffer Mapping
command -nargs=1 Vbuffer call VerticalSplitBuffer(<f-args>)

这完成了在右拆分中打开缓冲区的任务,因此对于缓冲区1,您可以这样调用它:

:Vbuffer 1
66762 次浏览

试试:

:vert sb N

它将打开一个左垂直分割(默认情况下,除非您已经修改了一些选项)。

另一方面,向右开叉:

:vert belowright sb N

:vsp | b1

1是某个缓冲区号。使用 buffers列出所有缓冲区。

如果你感兴趣的话,这里有一些关于分手的额外信息。 林克

你可以像这样使用 Neovim:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>

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

cabbrev vb vert sb

现在您可以按照以下方式使用它。

:vb <buffer>

您还可以将列出当前缓冲区的 :ls和在其中任意一个中打开所需缓冲区的命令组合在一起

  1. 当前窗口: :b <N/bufname>
  2. 垂直分割: :vsp | b <N/bufname>
  3. 水平分割: :sp | b <N/bufname>

为此,我在我的 ~/.vimrc中添加了以下映射(映射的顺序表示所需窗口的上述列表)

 nnoremap <leader>b :ls<cr>:b<space>
nnoremap <leader>v :ls<cr>:vsp<space>\|<space>b<space>
nnoremap <leader>s :ls<cr>:sp<space>\|<space>b<space>

基于这一点,您可以在点击后立即看到缓冲区列表

  1. <leader>b
  2. <leader>v
  3. <leader>s

然后输入所需的缓冲区编号 N。然后,这将在所需的窗口中打开缓冲区。当然,您仍然可以使用缓冲区名称 bufname的一部分。

我将 <leader>映射到基于

let mapleader = ","

对于一些人(比如我) ,这甚至可以取代像 MiniBufExpl 这样的插件,从而节省屏幕空间。

我认为最有用的 OP 的答案深深地嵌入在 Jerinaw 的答案和对它的评论中,以及 Wolfson 的答案中。但我觉得它可能会更突出。(他们也没有得到最高的评价,尽管在我看来他们是回答 OP 问题最好的。)

为什么没有 :vsbuffer这个问题的答案是。它叫做 :vsplit

:vsplit NameOfBuffer

或者

:vsplit #NumberOfBuffer.

(在第二次使用中,请注意 hash # 是重要的。如果你想得到缓冲区号3,你需要说 :vsplit #3,而不仅仅是 :vsplit 3,它将代替创建一个名为“3”的新文件。)

同样,这个答案也嵌入在上面,只是对于快速扫描器 IMV 来说还不够清晰。