emacs中左右分屏的两个window怎么互相换位置

有现成的操作吗?

ace-swap-window

1 个赞

善用搜索,论坛已经有好几个相关帖子了。

window-swap-states, 直接用内置的命令就行了。

1 个赞

什么是repeat mode

可以连续按键,比如切换窗口 就可以 C-x o o o o

image

这几个原生命令可以试一下,会让你喜欢的。【来自有原生,绝不用插件的执念党】

6 个赞

Wiki里面的解决方案在这里: EmacsWiki: Transpose Windows

切换窗口这个场景下,个人认为没必要搞那么复杂.绝大多数时候 ,你只需要打开两个窗口,所以你应该设一个绝大多数时候都可以无脑操作的鍵.我的操作流供大家参考:

sort-tab-left: C-,
sort-tab-right: C-.
other-window: C-return
切换横竖布局: spc w w
close : q

我是用了这个自定函数:

(defun transpose-windows ()
    "Swap the buffers shown in current and next window."
    (interactive)
    (let ((this-buffer (window-buffer))
          (next-window (next-window nil :no-minibuf nil)))
      (set-window-buffer nil (window-buffer next-window))
      (set-window-buffer next-window this-buffer)
      (select-window next-window)))

另外还会常用一个横竖布局切换的函数:

(defun toggle-window-split ()
    "Toggle window split from vertical to horizontal."
    (interactive)
    (if (> (length (window-list)) 2)
        (error "Can't toggle with more than 2 windows")
      (let ((was-full-height (window-full-height-p)))
        (delete-other-windows)
        (if was-full-height
            (split-window-vertically)
          (split-window-horizontally))
        (save-selected-window
          (other-window 1)
          (switch-to-buffer (other-buffer))))))

我不知道有原生的! 這個很不錯! :yum:

evil 用户可以用 C-w H/J/K/L 将当前窗口移动到最左/下/上/右边,例如左右分屏在右边窗口用 C-w H 或左边窗口用 C-w L 互换两个窗口的位置