法一、直接写个命令,把这个需求手动模拟,一步一步实现:
(defun split-window-left/right->up/down ()
"把左右两屏调整为上下两屏.
A
A|B => -
B"
(interactive)
(let ((buf (current-buffer)))
;; 选中左侧 window
(select-window (frame-first-window))
;; 删掉右侧 window
(delete-other-windows)
;; 分屏、选中下边 window
(select-window (split-window-below))
;; 切换至最近 buffer
(switch-to-buffer (other-buffer))
;; 选中原来 buffer 所在的 window
(select-window (get-buffer-window buf))))
法二、我不习惯 Emacs 默认的分屏命令,因为我觉得同一个 Buffer 分成两个 Window 没什么用。所以我有:
(defun chunyang-split-window-right ()
"Split window with another buffer."
(interactive)
(select-window (split-window-right))
(switch-to-buffer (other-buffer)))
(defun chunyang-split-window-below ()
"Split window with another buffer."
(interactive)
(select-window (split-window-below))
(switch-to-buffer (other-buffer)))
分别绑定到 C-x 3 和 C-x 2。之后
- 把左右两屏调整为上下两屏:C-x 1 C-x 2
- 把上下两屏调整为左右两屏:C-x 1 C-x 3