繁体   English   中英

在 VIM 中打开一个缓冲区作为垂直分割

[英]Open a buffer as a vertical split in VIM

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

我知道您已经可以使用正常拆分打开它,例如:

:sbuffer N

这里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

尝试:

:vert sb N

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

另一方面,要打开右侧的拆分,请执行以下操作:

:vert belowright sb N

:vsp | b1

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

如果您有兴趣,这里有一些关于拆分的附加信息。 链接

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

cabbrev vb vert sb

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

:vb <buffer>

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

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

:vsplit NameOfBuffer

:vsplit #NumberOfBuffer

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

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

您还可以结合:ls列出您当前的缓冲区和打开所需缓冲区的命令

  1. 当前窗口: :b <N/bufname>
  2. 垂直分割: :vsp | b <N/bufname> :vsp | b <N/bufname>
  3. 水平分割: :sp | b <N/bufname> :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 之类的插件,从而节省屏幕空间。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM