当我在emacs中多次分割窗口(在终端下)时,整个屏幕被分成几个部分,分层排列。在vim中,使用Control-w +(h,j,k,l)可以直观地在窗口之间切换,但在Emacs中,我只能使用Control-x + o切换到“其他窗口”,这可能需要几次迭代,最终到达我想要的窗口。我想知道是否有一种类似于Vim的更好的方法可以轻松地在窗口之间导航?
答案 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 wiki。 Nifty 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-window
和icicle-select-frame
是什么?
它们是多命令,可让您选择要按名称选择的窗口或框架。 (如果需要,您可以单独绑定它们 - 它们每个都根据自己的前缀args更改其行为。)
窗口和框架名称取自显示的缓冲区,如果需要更多相同的缓冲区,则附加[N]
(N
= 1,2,...)比一个窗口/框架。
作为多命令,您可以通过完成和/或骑自行车来选择。完成可以是前缀,子串,正则表达式或模糊。
答案 4 :(得分:0)
这也是我第一次使用emacs。但是,使用windmove,我可以套装它,我想要它。我用它作为windmove的修饰符:
(windmove-default-keybindings 'meta)
我使用ALT来导航windmove