无法通过Vim中的一个命令关闭多个缓冲区

Léo*_* 준영 70 vim

我在屏幕上使用Vim.我运行命令

vim <bigFolder>
Run Code Online (Sandbox Code Playgroud)

我陷入困境,因为关闭每个缓冲区是没有意义的

:q
Run Code Online (Sandbox Code Playgroud)

如何通过Vim中的一个命令关闭Vim中的所有活动缓冲区?

sun*_*aku 82

该:bufdo命令允许您在所有缓冲区上执行命令.在这种情况下,您希望:bufdo bdelete一次性运行以关闭所有打开的缓冲区.

  • 由于bdelete接受一个范围,你也可以这样做:1,9999bd,其中9999只是一个足够高的数字,可以合理地包含任何打开的缓冲区数. (3认同)

Ry4*_*ase 78

:qall或:qa将关闭所有窗口

  • 简短版:qa (27认同)
  • 非常感谢你!你救了我的一天.没有你的命令,我的终端将毫无用处. (2认同)
  • :qa是OP想要的,但当然它也退出了vim.对于gvim,当你想要完全关闭所有内容但不丢失你的gui窗口时,这通常是不可取的,所以最好使用下面的一种技术来关闭所有缓冲区而不会退出. (2认同)

小智 65

:%BD(elete)

我想这就是你要求的


Oli*_*Oli 16

:on
Run Code Online (Sandbox Code Playgroud)

将关闭除当前正在编辑的缓冲区之外的所有缓冲区(光标位于此缓冲区内).

:on!
Run Code Online (Sandbox Code Playgroud)

还将关闭修改后的缓冲区,但这些缓冲区将成为隐藏

:ls
Run Code Online (Sandbox Code Playgroud)

将列出所有缓冲区及其状态(隐藏,...)

一些帮助:

:h only
:h hidden-buffer
:h ls
Run Code Online (Sandbox Code Playgroud)

  • :上!实际上关闭其他窗口,而不是缓冲. (18认同)
  • 这是完全错误的.缓冲区是与窗户截然不同的动物. (3认同)

小智 12

:on 不会关闭任何缓冲区.

它只关闭其他窗口.


Pau*_*rey 6

这不是您要求的,但以下可能会产生预期的结果.它:

  • 使当前选项卡成为唯一打开的选项卡(:tabo)
  • 使选项卡中的窗口成为唯一打开的窗口(:only)
  • 在打开的窗口中显示第一个缓冲区(1 b)
  • 删除编号为2到2000的缓冲区(2,2000bd)

    :tabo | :only | 1 b | 2,2000 bd

如果您打开超过2000个缓冲区,请相应地进行调整.

它只是想删除所有缓冲区,1,2000bd应该完成这项工作,但请注意,将为所有打开的选项卡和窗口创建新的空缓冲区.


Dav*_*itz 5

但这并不能保存缓冲区.也许:wqall!:xall!好一点.