【问题标题】:Maximizing / restoring a window in emacs在 emacs 中最大化/恢复窗口
【发布时间】:2025-12-23 11:40:16
【问题描述】:

好的,所以也许这对于超级用户网站来说更像是一个问题,但我认为在 * 上会有更多的 emacs 用户。

基本上我经常将我的 emacs 分成大约 4 个窗口,这样我就可以同时查看一堆缓冲区。但是我希望能够 Cx 1(使窗口与 emacs 大小相同)然后以某种方式恢复到我刚刚看到的漂亮的 4 窗口布局。

有没有一种简单的方法可以做到这一点,或者我需要一些 elisp / lisp(注意:我不知道任何 elisp。)

谢谢! 约翰。

【问题讨论】:

  • 注意:当我说“窗口”时,我指的是 emacs 中的“窗格”。另请注意,我在 X 下的 Ubuntu 上使用 emacs。

标签: emacs lisp elisp


【解决方案1】:

试试winner-mode

启用获胜者模式后,您可以使用 C-c 恢复之前的窗口配置。

您可以重复键入它以后退窗口配置历史记录,因此即使有多个中间更改,您也很安全。

C-c (直接)返回最新配置。

【讨论】:

  • 恰到好处,也很简单:)
【解决方案2】:

我确信有几种不同的解决方案,但我使用:

Cx rwx 存储窗口配置,Cx rjx 恢复它,其中x 是存储它的寄存器的名称.

然后,我也喜欢winner-mode,它允许使用winner-undowinner-redo 切换回以前的窗口配置(我绑定到 C-^Cc ^ kbd> 因为我无法忍受默认设置的绑定 Cc Cc )。

【讨论】:

    【解决方案3】:

    (winner-mode 1) 是我首选的通用解决方案(我会敦促尚未使用它的任何人立即将其添加到他们的 init 文件中),但对于这个特定问题也值得指出(最大化单个窗口然后返回到以前的配置),只需创建一个新框架就可以很好地工作。

    • C-x52 创建新框架。
    • C-x50 删除它并返回原始帧。

    在终端中,它是完全无缝的。使用 GUI Emacs,如果您的新框架自动全屏(或者您希望它们是),那很好,但如果您手动调整它们的大小,则效果不佳。

    【讨论】:

      【解决方案4】:

      您还应该在要关闭的窗口中尝试C-x 0,因为它会关闭该特定窗口,但不会关闭任何其他窗口。我认为大多数人在他们使用C-x 1 的大部分时间都想要这个。

      【讨论】:

        【解决方案5】:

        http://www.emacswiki.org/emacs/frame-cmds.el

        查看命令maximize-framerestore-frame(又名toggle-frame)。还有命令maximize-frame-horizontallymaximize-frame-verticallyrestore-frame-horizontallyrestore-frame-vertically

        【讨论】:

        • 虽然问题中的术语不是很清楚,但我相信 C-x 1 示例中的这个问题根本与框架无关。
        • 哎呀,对不起——是的,你毫无疑问是对的。那样的话,关于保存和恢复窗口配置的答案是合适的。
        【解决方案6】:

        我使用escreen.el 进行多个工作区管理,但作为副作用,每个工作区都会记住窗口配置。因此,您可能会发现它是一个有用的软件包。

        其他人建议elscreen而不是escreen,但我还没有使用过这个包。所以我不能说它是否还保留了工作区的窗口配置。

        【讨论】: