我通常会打开几个窗口并保持一些缓冲区打开。由于我在缓冲区探索中的 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 将悄悄创建一个新窗口并关闭旧窗口。光标留在新窗口中。这样做有许多积极作用:
- 您原来的分割尺寸被保留。
- 在新的分割中加载一个空缓冲区。
- 原始缓冲区仍处于加载状态,使用 :buffers 列出它。
- 如果您需要返回,请按 Ctrl+o 键将光标移动到旧缓冲区中的原始位置。
- 即使仅加载一个窗口也能正常工作。