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

mik*_*996 24 vim

我通常打开几个窗口并保持一些缓冲区打开。由于我在缓冲区探索MO是使用快速快捷键:bn:bp,我想从我分心缓冲冲浪关闭不需要的缓冲区。

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

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

:command! BW :bn|:bd#
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*aun 23

我搞砸了一点,最后想出了:

:bp | sp | bn | bd

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

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

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

命令 Bd bp | sp | 十亿 | BD

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

  • 如果我关闭在两个窗口中打开的缓冲区,例如最后一个缓冲区,我将丢失拆分。+1 比 wikia 脚本更简单 [bd 而不关闭窗口](http://vim.wikia.com/wiki/Deleting_a_buffer_without_closure_the_window)。 (3认同)

pet*_*eth 12

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

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

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

另请参阅Vim wikia 上的删除缓冲区而不关闭窗口


gar*_*ohn 5

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