首页 > 解决方案 > 关闭 Emacs 中的特定窗口

问题描述

在 emacs 中创建窗口真的很容易,例如 Cx 2 在当前窗口的下方创建一个窗口,而 Cx 3 在当前窗口的右侧创建一个窗口。所以它很容易创建一个布局,如:

    |     2      |
1   |------------|   4
    |     3      |

现在问题来了,我如何快速杀死特定窗口(就像我在 1 号窗口中工作,在 2 号窗口中查看某些东西并且不想要 3 号所以想要快速杀死它)而不跳到那个窗口?我知道我们可以使用 Cx o 切换到那个窗口并使用 Cx 0 来杀死它。有没有办法像按下 Cx k 3 来杀死 3 号窗口?

标签: emacs

解决方案


如果您使用库frame-cmds.el,那么您可以使用命令delete-windows-on删除给定缓冲区的所有窗口。缓冲区名称是在完成时读取的,因此这通常非常快。

交互式:

  • 没有前缀 arg,删除所有帧上的匹配窗口
  • 使用前缀 arg >= 0,仅删除选定(当前)帧上的匹配窗口
  • 使用前缀 arg < 0,删除所有可见帧上的匹配窗口

您当然可以使用delete-windows-on定义自己的命令,该命令始终delete-windows-on与带有正前缀 arg 的命令一样。只需使用(delete-windows-on nil t).

(如果你使用Icicles那么C-u C-x 0(command icicle-delete-window) 和 commandicicle-delete-window-by-name会给你类似的行为。这些是multi-commands,这意味着你可以通过一个命令调用删除多个窗口。)


推荐阅读