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

时间:2010-12-31 17:45:44

标签: vim

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

我知道您已经可以使用普通拆分打开它,如:

:sbuffer N

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

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

Ctrl-W H
Ctrl-W L

将窗口垂直分割为右侧或左侧。

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

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

我相信我可能会遗漏那些已存在的东西。

编辑: 在最好的协作精神中,如果其他人偶然遇到此问题并且不想安装插件,我已经创建了一个带有映射的简单函数:

功能:

" 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

6 个答案:

答案 0 :(得分:184)

尝试:

:vert sb N

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

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

:vert belowright sb N

答案 1 :(得分:112)

:vsp | b1

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

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

答案 2 :(得分:2)

您还可以结合使用: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之类的插件,从而节省屏幕空间。

答案 3 :(得分:2)

我发现最有用的OP答案深深地嵌入在Jerinaw的答案和对此的评论以及Wolfson的答案中。但是我觉得它可能会更多。 (即使在我看来,那些人对OP的回答最佳,也没有获得最高的投票。)

问题“为什么不存在:vsbuffer”的答案是存在。它称为:vsplit,其窍门如下:

:vsplit NameOfBuffer

OR

:vsplit #NumberOfBuffer

(在第二种用法中,请注意,哈希号是有效的。如果要获取第3号缓冲区,则需要说:vsplit #3,而不仅是:vsplit 3,创建一个名为“ 3”的新文件。)

同样,此答案已嵌入上方,对于快速扫描仪IMV而言,答案还不够清楚。

答案 4 :(得分:0)

你可以使用Neovim,就像那样:

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

答案 5 :(得分:0)

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

cabbrev vb vert sb

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

:vb <buffer>