如何快速把左右两屏调整为上下两屏呢?

差不多是的。实际检测的是 Emacs 的宽度(即水平方向能显示的英文字符的数量)和高度(即垂直方向……),究竟是左右还是上下分屏取决于它们与 split-height-thresholddsplit-width-threshold 的关系(Emacs manual 中有解释),大概是这个关系:

(cond ((> emacs-height split-height-threshold)  (上下分屏))  ; 一般总是不满足
      ((> emacs-width  split-width-threshold)   (左右分屏))  ; 你的左右分屏时的情况
      (t                                        (上下分屏))) ; 你的上下分屏时的情况

比如我的 13 英寸笔记本下最大化 Emacs 应用程序时的参数如下:

(list split-height-threshold split-width-threshold)
    ⇒ (80 160)

(list (window-height) (window-width))
    ⇒ (48 177)

可以发现此时 Emacs 宽度足够(177 > 160)所以会左右分屏。此时要是我把 Emacs 宽度缩小一点(比如宽度至 159),就会变成上下分屏了。

C-x 4 b 等命令的分屏规律也一样。


方法之一是把 split-width-threshold 调小些,如果可以的话,再把 Emacs 拉扁些。

本来也可以像下面那样设置 display-buffer-alist 选项来无视宽度高度、总是左右分屏的,但是由于 org-mode shadow 了这个选项,所以不好用了。

(add-to-list 'display-buffer-alist
             `(,(rx (or "*Org Agenda*" "* Agenda Commands*"))
               (display-buffer-in-side-window)
               (side . right)))
4 个赞