在Emacs中更好的窗口导航?

时间:2011-02-01 04:41:30

标签: vim emacs editor window

当我在emacs中多次分割窗口(在终端下)时,整个屏幕被分成几个部分,分层排列。在vim中,使用Control-w +(h,j,k,l)可以直观地在窗口之间切换,但在Emacs中,我只能使用Control-x + o切换到“其他窗口”,这可能需要几次迭代,最终到达我想要的窗口。我想知道是否有一种类似于Vim的更好的方法可以轻松地在窗口之间导航?

5 个答案:

答案 0 :(得分:30)

你试过WindMove吗?它与Emacs 21+捆绑在一起。你可以移动 Shift-up Shift-down Shift-left Shift-right 你可以改变修饰语。来自文档:

;; Installation:
;;
;; Put the following line in your `.emacs' file:
;;
;;     (windmove-default-keybindings)         ; shifted arrow keys
;;
;; or
;;
;;     (windmove-default-keybindings 'hyper)  ; etc.
;;
;; to use another modifier key.
;;
;;
;; If you wish to enable wrap-around, also add a line like:
;;
;;    (setq windmove-wrap-around t)

答案 1 :(得分:2)

我发现other-window的默认绑定也非常乏味。我在.emacs中定义了以下内容:

(global-set-key [(control ?,)] (lambda () (interactive) (other-window -1)))
(global-set-key [(control ?.)] (lambda () (interactive) (other-window 1)))

找到一些易于触及的键绑定(我使用Dvorak布局,所以 C - , C - 。可能不容易达到),最好是彼此相邻,以绑定那些lambdas。

另外,几个月前我找到了Emacs wikiNifty Tricks有很好的方法可以让Emacs更易于使用!

答案 2 :(得分:1)

switch-window。它会对窗口进行编号,让您直接切换到所需的窗口。

答案 3 :(得分:1)

Icicles 中,默认情况下 C-x o 绑定到多命令icicle-other-window-or-frame,它以这种方式工作:

  • 没有前缀arg或非零数字前缀arg: 如果所选框架有多个窗口,那么这就是 other-window。否则,它是other-frame

  • 使用零前缀arg(例如 C-0 ): 如果所选框架有多个窗口,那么这就是 icicle-select-window框架中的窗口作为候选人。 否则(单窗口框架),这是icicle-select-frame

  • 用普通的C-u: 如果所选框架有多个窗口,那么这就是 icicle-select-window所有可见帧的窗口为。{1}} 候选人。否则,这是icicle-select-frame

那么,icicle-select-windowicicle-select-frame是什么?

它们是多命令,可让您选择要按名称选择的窗口或框架。 (如果需要,您可以单独绑定它们 - 它们每个都根据自己的前缀args更改其行为。)

窗口和框架名称取自显示的缓冲区,如果需要更多相同的缓冲区,则附加[N]N = 1,2,...)比一个窗口/框架。

作为多命令,您可以通过完成和/或骑自行车来选择。完成可以是前缀,子串,正则表达式或模糊。

http://www.emacswiki.org/emacs/Icicles_-_Multi-Commands

答案 4 :(得分:0)

这也是我第一次使用emacs。但是,使用windmove,我可以套装它,我想要它。我用它作为windmove的修饰符:

(windmove-default-keybindings 'meta)

我使用ALT来导航windmove