【问题标题】:Unable to close many buffers by one command in Vim无法在 Vim 中通过一个命令关闭多个缓冲区
【发布时间】:2015-06-12 19:18:51
【问题描述】:

我在 Screen 中使用 Vim。我运行命令

vim <bigFolder>

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

:q

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

【问题讨论】:

  • 我什至不能使用命令 Ctrl-D 关闭屏幕,因为我正在浏览文件夹。关闭 Vim 无济于事,因为我在 Screen 中,一切都保留在上次会话中。
  • 我认为您将缓冲区与窗口混淆了。 :q 或 :quit 关闭当前窗口。使用 :bd 或 :bdelete 卸载缓冲区并将其从缓冲区列表中删除。 sunaku 的答案是目前唯一正确的答案:)

标签: vim


【解决方案1】:

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

【讨论】:

  • 由于 bdelete 接受一个范围,您还可以执行 :1,9999bd ,其中 9999 只是一个足够高的数字,可以合理地包含任何打开的缓冲区数。
【解决方案2】:

:qall:qa 将关闭所有窗口

【讨论】:

  • 非常感谢!你拯救了我的一天。没有你的命令,我的终端将毫无用处。
  • :qa 是 OP 想要的,但它当然也会退出 vim。对于 gvim,当您只想完全关闭所有内容但又不想丢失 gui 窗口时,这通常是不可取的,因此最好使用以下技术之一来关闭所有缓冲区而不退出。
【解决方案3】:

:%bd(删除)

我想这就是你想要的

【讨论】:

  • 如何将它应用到一个缓冲区? :bd 也许?
【解决方案4】:
:on

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

:on!

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

:ls

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

一些帮助:

:h only
:h hidden-buffer
:h ls

【讨论】:

  • 感谢您的回答! - - 我看不出选项 [!] 和没有它之间的区别。我所有的缓冲区都被这两个命令隐藏了,即使是我保存的。你怎么看出来的?
  • 我从 vim 帮助中得到了这个,你说得对,我看不出两者之间的区别。
  • :开!实际上关闭了其他窗口,而不是缓冲区。
  • 这完全是错误的。缓冲区是与窗户截然不同的动物。
  • 是的,缓冲区保持打开状态。试试下面答案中的 :%bd,这对我有用!
【解决方案5】:

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

它只关闭其他窗口。

【讨论】:

    【解决方案6】:

    这并不完全符合您的要求,但以下内容可能会产生理想的结果。它:

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

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

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

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

    【讨论】:

    • 不错!我什至不知道您可以在 vim 命令模式下将命令连接在一起。为此 +1。
    • 在这种情况下,它并不是真正的“管道”。 "bar" 运算符只允许您在 Vim 中的一行中执行多个命令。 doc
    【解决方案7】:

    但这并没有保存缓冲区。也许:wqall! :xall!稍微好一点。

    【讨论】:

      【解决方案8】:

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

      • 如果你能用 CTRL+Z 挂起 VIM,那么你可以用 kill %vim 杀死它
      • 如果您不能暂停 VIM,您应该能够使用 ps 找到它的 pid。你可以杀了它:
      $ 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
      

      所以如果我想杀死正在编辑的 VIM a.pl 你可以这样做:

      kill -9 27273
      

      即使在屏幕内也应该可以工作

      【讨论】:

        【解决方案9】:

        :q!

        总是为我工作。

        【讨论】:

          猜你喜欢
          • 2010-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多