如何在不关闭窗口的情况下关闭缓冲区?

如何在不关闭窗口的情况下关闭缓冲区?

我通常会打开几个窗口并保持一些缓冲区打开。由于我在缓冲区探索中的 MO 是使用快捷方式:bn:bp,因此我想关闭不需要的缓冲区,以免分散我对缓冲区浏览的注意力。

但麻烦的是,如果我打开了多个窗口,发出:bd:bw导致窗口也关闭。如何关闭(删除)缓冲区并保持窗口完好无损?

解决方案受到@peth 答案的启发

:command! BW :bn|:bd#

很简单。只打开一个缓冲区时效果不佳(根据我打开文件的方式,我会得到不同的行为)但这不是什么大问题。:)

答案1

#vim这可能很痛苦,这个问题在(Freenode) 上也被反复提出。

有些人建议不要删除缓冲区,而是用:b partial<Tab>而不是来切换:bn,这可行,但这不是您所要求的。

我知道的最好的方法是切换到另一个缓冲区,然后:bd#,当然你可以映射它。

也可以看看删除缓冲区而不关闭窗口在 Vim wikia 上。

答案2

我对此进行了一些思考并最终得出了以下结论:

:bp | sp | bn | bd

以下是键映射的复制/粘贴版本:

:bp<bar>sp<bar>bn<bar>bd<CR>

或者你的 .vimrc 的命令(使用 :Bd 调用):

命令 Bd bp | sp | bn | bd

我已经对它进行过多次测试,它在各种条件下都能正常工作。当在最后一个缓冲区上使用时,它会给你留下一个新的空白缓冲区。

答案3

窗口是缓冲区的视口。(请参阅:help window。)您不能拥有没有关联缓冲区的窗口。:enew不过,您可以使用诸如 之类的命令将当前窗口内容替换为空缓冲区。

答案4

这是另一个解决方案:

map <C-W>o <C-W>n<C-W><C-W><C-W>c

键入 Ctrl+W 然后键入 o 将悄悄创建一个新窗口并关闭旧窗口。光标留在新窗口中。这样做有许多积极作用:

  1. 您原来的分割尺寸被保留。
  2. 在新的分割中加载一个空缓冲区。
  3. 原始缓冲区仍处于加载状态,使用 :buffers 列出它。
  4. 如果您需要返回,请按 Ctrl+o 键将光标移动到旧缓冲区中的原始位置。
  5. 即使仅加载一个窗口也能正常工作。

相关内容