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

byn*_*eri 145 vim

删除缓冲区时("bd [elete]"命令),它不仅会删除缓冲区,还会删除缓冲区所在的拆分窗口.

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

Mud*_*Mud 313

bp|bd # 会做的.


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

  • 你不知道我一直在寻找这样的东西多久这么简单,不需要和整个脚本来运行它.在我的VIMRC中,我现在为CTRL + C映射了这个:`nnoremap <Cc>:bp\| bd#<CR>` (70认同)
  • 在`|`前加一个反斜杠(例如`:bp\| bd`) (22认同)
  • 我正在尝试使用`nmap <silent> <leader> d:bp | bd#<CR>`重新映射,但我得到`E94:#CR>没有匹配缓冲区. (11认同)
  • 我知道我不应该为此安装插件.谢谢! (3认同)
  • `b#| bd #`将切换到最后使用的缓冲区而不是下一个/上一个缓冲区.但是,如果你有`set hidden`,它会跳转到隐藏缓冲区,所以我做了一个更智能的BD功能来避免这种情况. (2认同)
  • 遗憾的是我无法多次点击投票按钮。很棒的解决方案。谢谢! (2认同)
  • 不完美,因为如果缓冲区在其中几个上打开,这将关闭窗口,否则效果很好。一个完美的解决方案是在所有打开的窗口中替换缓冲区,如果没有缓冲区,它将在窗口上打开一个“临时”缓冲区。完美的解决方案永远不会关闭任何窗口。 (2认同)

GWW*_*GWW 28

我真的很喜欢bufkill.vim有一个GitHub库,以及

  • 非常感谢,这个vim行为给我带来了很多麻烦!顺便说一下,bufkill的最新版本是https://github.com/qpkorr/vim-bufkill (3认同)

rro*_*osa 14

您可以添加以下到你.vimrcBd工作的bd,但没有触及窗口拆分:

command Bd bp\|bd \#

我发现这是对Mud回答的有用补充.

  • 对我来说,它只适用于 .vimrc `command!Bd bp|bd #`。上面带有 `\` 的命令将缓冲区保存在缓冲区列表中。 (3认同)