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

无法通过Vim中的一个命令关闭多个缓冲区,vim,Vim,我在屏幕上使用Vim。我运行命令 vim <bigFolder> 如何通过Vim内部的一个命令关闭Vim中的所有活动缓冲区?:qall或:qa将关闭所有未保存缓冲区的窗口。也许:wqall!:萨尔!好一点 :on 将关闭除当前正在编辑的缓冲区之外的所有缓冲区(光标位于该缓冲区内) 也将关闭修改后的缓冲区,但这些缓冲区将成为隐藏缓冲区 :ls 将列出所有缓冲区及其状态(隐藏,…) 一些帮助: :h only :h hidden-buffer :h ls 如果你碰巧让VIM完全卡

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

vim <bigFolder>

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

:qall
:qa
将关闭所有未保存缓冲区的窗口。也许:wqall!:萨尔!好一点

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

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

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

一些帮助:

:h only
:h hidden-buffer
:h ls

如果你碰巧让VIM完全卡住了,你仍然可以从VIM外部杀死它

  • 如果可以使用CTRL+Z暂停VIM,则可以使用
    kill%VIM
  • 如果无法挂起VIM,则应该能够使用
    ps
    找到其pid。你可以杀死它:
因此,如果我想杀死正在编辑
a.pl
的VIM,您可以:

kill -9 27273
这应该在屏幕内部也能正常工作

:q


始终适用于我。

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

:%bd(elete)


我想这就是你想要的:on不关闭任何缓冲区


它只关闭其他窗口

这并不是你想要的,但下面可能会给出一个理想的结果。它:

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

    :tabo |:仅| 1 b | 22000 bd

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


如果您只想删除所有缓冲区,
12000BD
应该可以完成这项工作,但请注意,将为所有打开的选项卡和窗口创建新的空缓冲区。

我甚至无法使用命令Ctrl-D关闭屏幕,因为我正在浏览文件夹。关闭Vim没有任何帮助,因为我在屏幕上,所有内容都保留在上一次会话中。我认为您将缓冲区与windows混淆了q或:退出关闭当前窗口。使用:bd或:bdelete卸载缓冲区并将其从缓冲区列表中删除。sunaku的答案是唯一正确的:)非常感谢!你救了我一天。如果没有你的命令,我的终端将毫无用处。:qa是OP想要的,但当然它也会退出vim。对于gvim,当您希望完全关闭所有内容但不丢失gui窗口时,这通常是不可取的,因此最好使用以下技术之一关闭所有缓冲区而不退出。谢谢您的回答!--我看不出选项[!]和没有它之间的区别。我所有的缓冲区都被这两个命令隐藏了,即使是我保存的命令。你怎么能看出区别?我从vim帮助中获取了这个,你是对的,我看不出两者之间的区别。:on!实际上关闭了其他窗口,而不是缓冲区。这完全是错误的。缓冲区与windows非常不同。是的,缓冲区是打开的。试试下面答案中的:%bd,这对我很有用!美好的我甚至不知道可以在vim命令模式下将命令管道连接在一起+1。在这种情况下,它不是真正的“管道”。“bar”操作符只允许您在Vim的一行中执行多个命令。由于bdelete接受一个范围,您也可以这样做:19999bd,其中9999只是一个足够高的数字,似乎可以包含任何打开的缓冲区编号。如何将此应用于一个缓冲区<代码>:bd
可能吗?
:h only
:h hidden-buffer
:h ls
$ ps -f -C vim
UID        PID  PPID  C STIME TTY          TIME CMD
nfellman 27273  7473  0 Jun24 pts/15   00:00:00 /nfs/iil/home/nfellman/vim/bin/vim a.pl
nfellman 37213  23747 0 Jun23 pts/15   00:00:00 /nfs/iil/home/nfellman/vim/bin/vim b.pl
kill -9 27273