Vim:删除缓冲区而不会丢失分割窗口

时间:2010-12-16 20:30:47

标签: vim

当缓冲区被删除时(“bd [elete]”命令),它不仅会删除缓冲区,还会删除缓冲区所在的分割窗口。

有没有办法删除/卸载缓冲区并保持窗口分割?

8 个答案:

答案 0 :(得分:292)

bp|bd #会这样做。


详细信息:bp(“buffer previous”)将我们移动到当前窗口中的不同缓冲区(bn也可以),然后bd #(“缓冲区删除”“备用文件“)删除我们刚刚离开的缓冲区。请参阅:help bphelp bdhelp alternate-file

答案 1 :(得分:25)

我非常喜欢bufkill.vim还有github repo

答案 2 :(得分:12)

请参阅有关VIM提示wiki的deleting a buffer without closing the window

答案 3 :(得分:11)

您可以将以下内容添加到.vimrc,让Bd作为bd工作,但不要触及窗口拆分:

command Bd bp\|bd \#

我发现这是Mud answered.

的有用补充

答案 4 :(得分:3)

我做了类似@Mud的事情,但切换到上一个视图缓冲区#,而不是缓冲区列表中的前一个缓冲区。这是我.vimrc中的绑定密钥:

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

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

答案 5 :(得分:1)

我的选择是

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

这样想! ///&lt; 1。 Recall Buffer&gt; | &2。删除缓冲区&gt;

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

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

  1. sb split_buffer
  2. bd删除缓冲区▶简单的2个关键字
  3. #或缓冲区数
  4. vert▶short_form of vertical(split_buffer or else)
  5. 在许多其他情况下,这很容易且非常有用!

    祝你有愉快的一天! :)

答案 6 :(得分:0)

我以前用过:

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

但是我发现它关闭了窗户的某些场合。最重要的是,下一个或上一个缓冲区可能不是您希望在拆分中显示的内容。

现在我这样做:

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

nnoremap <leader>d :bd#<CR>

答案 7 :(得分:0)

我实际上有时候有时候喜欢:bd的行为,所以我使用以下组合:

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

这使我可以使用<Leader>d关闭缓冲区,同时保持拆分状态,而<Leader>w可以关闭缓冲区并同时拆分。

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