Emacs 新窗口命令

目录

简介

大约在 2024 年 9 月左右,我也发现了一个用于 Emacs 窗口管理的实用包 transpose-frame.el。 大约在这个时候,我读了 Tobias 关于 doing things that scale 的文章。简而言之:与其自定义和维护自定义,不如尝试将更改推送到上游。 所以当然,作为一个改变了的人,我发了一封简单的电子邮件,要求将 transpose-frame.el 移到 Emacs 核心。但事实证明,该包的核心存在很多问题,如果不重写,根本无法修复。 基本上,transpose-frame.el 依赖于“复制粘贴”窗口状态(例如缓冲区、overlays 等),这是一种错误的方法。这封邮件 更详细地介绍了 transpose-frame.el 的问题。正确的方法需要在 Emacs 的 C-land 中编写新代码,以便在使用函数 split-window 时能够“复活”窗口对象。因此,仅仅更改 transpose-frame.el 中的代码是不够的。需要完全重写。 因此,在不知道有多少工作量的情况下,我同意了。经过大约 4 个月不频繁的、痛苦的工作,包括与 Martin Rudalics 的不断合作,他是 windows.cwindows.el 的维护者,负责 C-land 方面的所有代码。现在,Emacs 31 具有 transpose-frame.el 的所有功能,以及额外的功能。包含所有这些命令的文件是 window-x.el

命令

现在,我在以下图像中使用了简单的布局,只是因为我懒得制作更复杂的布局。请记住,这些命令可以用于您能想到的任何复杂的窗口布局。 我建议尝试一下,亲自体验一下,但如果您没有 Emacs 31,这是一个预览。

转置 (Transpose)

M-x transpose-window-layout 这个基本上是沿对角线镜像。 transpose.png

旋转布局 (Rotate layout)

M-x rotate-window-layout-clockwise rotate-clock.png

M-x rotate-window-layout-anticlockwise rotate-anto.png

翻转 (Flip)

M-x flip-window-layout-horizontally flip-h.png

M-x flip-window-layout-vertically flip-v.png

循环 (旋转窗口) Cycle (rotate windows)

这是我个人最喜欢的。 M-x rotate-windows cycle.png

M-x rotate-windows-back cycle-anti.png