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

法一、直接写个命令,把这个需求手动模拟,一步一步实现:

(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 3C-x 2。之后

  • 把左右两屏调整为上下两屏:C-x 1 C-x 2
  • 把上下两屏调整为左右两屏:C-x 1 C-x 3
3 个赞