Emacs倾向于打开两个水平分离的窗口,一个在另一个上面(我认为windows是正确的emacs术语)。由于我正在使用宽屏幕,因此我发现使用两个垂直分离的窗口更容易,更好,在emacs框架中并排排列。
我知道如何使用C-x 3
打开一个新的垂直分离窗口,但是如何重新排列emacs打开的窗口(例如,当调用M-x compile
打开编译/调试窗口时)从水平到垂直?
答案 0 :(得分:1)
我有同样的问题,这是我目前使用的。只需将其放入您的Emacs init文件中:
;; The default behaviour of `display-buffer' is to always create a new
;; window. As I normally use a large display sporting a number of
;; side-by-side windows, this is a bit obnoxious.
;;
;; The code below will make Emacs reuse existing windows, with the
;; exception that if have a single window open in a large display, it
;; will be split horisontally.
(setq pop-up-windows nil)
(defun my-display-buffer-function (buf not-this-window)
(if (and (not pop-up-frames)
(one-window-p)
(or not-this-window
(not (eq (window-buffer (selected-window)) buf)))
(> (frame-width) 162))
(split-window-horizontally))
;; Note: Some modules sets `pop-up-windows' to t before calling
;; `display-buffer' -- Why, oh, why!
(let ((display-buffer-function nil)
(pop-up-windows nil))
(display-buffer buf not-this-window)))
(setq display-buffer-function 'my-display-buffer-function)
答案 1 :(得分:1)
查看split-height-threshold
和split-height-threshold
变量,两者都可自定义。
有关他们采取什么值的更多信息, C-h f split-window-sensibly
RET 。 This Emacs Lisp表面上触及了这个话题。
这会影响display-buffer
的工作方式,可能compile
和许多其他命令都会使用。
答案 2 :(得分:0)
这是我的解决方案:
(defun split-window-prefer-side-by-side (&optional window)
(let ((split-height-threshold (and (< (window-width window)
split-width-threshold)
split-height-threshold)))
(split-window-sensibly window)))
(setq split-window-preferred-function 'split-window-prefer-side-by-side)
这仍然可以查询split-*-threshold
个变量值,当两个分割方向都可以接受时,只需要并排窗口。