如何删除 Vim 中的缓冲区而不丢失拆分窗口?

当一个缓冲区被删除时(通过 :bd[elete]命令) ,它不仅删除了缓冲区,而且还删除了缓冲区所在的拆分窗口。

有没有办法删除/卸载一个缓冲区,并保持窗口拆分?

30826 次浏览

在 VIM 技巧维基上查看 删除缓冲区而不关闭窗口

我真的很喜欢 Bufkill Vim有一个 Github Repo以及

bp|bd #可以。


详细信息: bp命令(“ buffer before”)将我们移动到当前窗口中的另一个缓冲区(bn也可以) ,然后 bd #(“ buffer delete”“ Alternative file”)删除我们刚刚移开的缓冲区。参见 :help bp:help bd:help alternate-file

你可以添加以下到你的 .vimrc,让 Bd作为 bd工作,但不要触摸窗口分裂:

command Bd bp\|bd \#

我发现这是对什么 玛德接电话了。的有用补充

我做了一些类似@Mud 的操作,但是切换到前一个视图缓冲区 #,而不是缓冲区列表中的前一个缓冲区。下面是我的 .vimrc中的一个绑定键:

nnoremap <silent> <leader>q :lclose<bar>b#<bar>bd #<CR>

关闭 Location 窗口(如果存在) ,切换到上一个视图缓冲区,然后关闭上一个切换的缓冲区。

我过去常用:

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

但我发现有时候它会关上我的窗户。此外,下一个或上一个缓冲区可能不是您希望在拆分中显示的内容。

现在我这样做:

  • 切换到我想处理的缓冲区
  • 删除备用缓冲区

nnoremap <leader>d :bd#<CR>

我的选择是

:sb # | bd #
:sb 1 | bd #
: <1. Recall Buffer> | <2. Delete Buffer>

这样想!///< 1. 召回 Buffer > | < 2. 删除 Buffer >

:vert sb 2 | bd #
:vert sb <tab key~completed file(buffer)name> | bd #

为什么? ! 这很容易记住3(+ 1)关键字!

  1. 某人拆分缓冲区
  2. 删除缓冲区简单2关键字
  3. # 或缓冲区数目
  4. 垂直的短形式(分割缓冲区或其他)

这是很容易的,非常有用的,在许多其他情况下!

祝你今天愉快! :)

事实上,有时候我喜欢 :bd的表现,所以我使用以下组合:

nmap <silent> <Leader>d  :enew \| bd#<Return>
nmap <silent> <Leader>w :bd<CR>

这允许我使用 <Leader>d来关闭一个缓冲区,同时维护 Split 和 <Leader>w来关闭一个缓冲区并同时进行分割。

  1. :enew创建一个新的缓冲区并将焦点切换到它
  2. bd #删除上一个被聚焦的缓冲区