Emacs在指定方向上移动分割窗口?

时间:2013-05-17 11:24:01

标签: emacs

在终端Emacs(没有鼠标)中,我正在使用拆分窗口同时处理多个缓冲区。我发现在分割窗口之间移动比在Vim中做的更痛苦。阅读文档看起来我正确地做到了( C-x o ),但这只是顺时针方向围绕窗口循环。如果我移动到相邻的窗口进行快速编辑,我需要在我回到原地之前点击 C-x o 几次。有时候我不小心匆匆按了很多次,不得不再次循环回窗户。

除了安装还有另外的外包装外,有什么方法可以直接移动到一个窗口(例如一个数字),或者至少在相反方向绕窗口循环?

在Vim Cw Cw 与Emacs中的 Cx o 类似,但也有 Cw ARROW 在指定方向上移动......像那样? :)

7 个答案:

答案 0 :(得分:23)

将此添加到您的init文件中:

(windmove-default-keybindings)

然后您可以使用 SHIFT + 箭头 移动到指定方向的下一个相邻窗口。

如果您愿意,可以通过传递参数(默认为'shift)来指定其他修饰符。

或者只是将您喜欢的任何内容绑定到这些函数:

  • windmove-up
  • windmove-down
  • windmove-left
  • windmove-right

您还可以将FrameMove添加到混音中,以使其在多个帧中透明地工作。

对于带编号的窗口导航,有switch-window.el

答案 1 :(得分:2)

您可以为 C-x o 提供前缀参数,例如 C-u -1 C-x o 。这样你就可以向前或向后移动任意数量的窗口。就个人而言,我认为创建一个特殊的键来移回一个窗口更容易。我的.emacs中有这个:

(defun other-window-backward ()
  "Goto previous window"
  (interactive)
  (other-window -1))
(global-set-key (kbd "\C-x p") 'other-window-backward)

答案 2 :(得分:2)

将此添加到您的初始文件(例如~/.emacs):

(windmove-default-keybindings)

然后按 SHIFT + 箭头 移动到该方向的窗口。

答案 3 :(得分:1)

我使用以下内容导航到下一个(与 C-x o 相同),前一个,第一个和最后一个窗口:

(defun my-previous-window ()
  "Previous window"
  (interactive)
  (other-window -1))
(global-set-key "\C-xp" 'my-previous-window)

(global-set-key "\C-xn" 'other-window)

(defun my-select-first-window ()
  (interactive)
  (select-window (frame-first-window)))

(defun my-select-last-window ()
  (interactive)
  (select-window (previous-window (frame-first-window))))

(global-set-key "\C-x<" 'my-select-first-window)
(global-set-key "\C-x>" 'my-select-last-window)

答案 4 :(得分:1)

使用window-jump,例如:

;; C-x <direction> to switch windows
(use-package window-jump
             :bind (("C-x <up>" . window-jump-up)
                    ("C-x <down>" . window-jump-down)
                    ("C-x <left>" . window-jump-left)
                    ("C-x <right>" . window-jump-right)))

有关use-package的帮助,请参阅https://github.com/jwiegley/use-package/blob/master/README.md

答案 5 :(得分:1)

为了完成,还有window-numberingace-window

答案 6 :(得分:0)

我前段时间写了一个elisp模块以扩展windmove以使其更有用:http://samograd.ca/stumpwm.el。您可以将stumpwm-move-window- [左/右/上/下]绑定到您想要的任何键,窗口将以正确的方向移动,甚至可以移动到另一个帧(使用2帧测试)。还有一个stumpwm-interactive-resize-window,用于使用C-n / C-p / C-f / C-b进行便捷的交互式窗口调整,并使用Return to end resizing。