2013-02-14 101 views
20

我经常发现自己从emacs中的两个窗口的水平视图切换到垂直视图。这需要我先做C-x 1,然后C-x 3,然后C-x o,然后C-x b <RET>切换到另一个缓冲区或类似的东西。我只想输入C-x |(类似于在Ediff中如何打|来切换分割视图)。Emacs快捷键从一个水平分割切换到一个垂直分割?

我发现这在Emacs的维基网站: http://www.emacswiki.org/emacs/ToggleWindowSplit

但是我怎么映射,要我想要的组合键?或者是否有更简单的方法来执行此操作(减少.emacs空间)。

回答

19

最后一行是定义组合键的地方。它应该是(global-set-key (kbd "C-x |") 'toggle-window-split)

+0

感谢这个工作! – 2013-02-14 18:28:31

13

使其成为其他人也正好在看的剧本更容易(在此链接:http://www.emacswiki.org/emacs/ToggleWindowSplit),已经与对方回答的键绑定修改:

(defun toggle-window-split() 
    (interactive) 
    (if (= (count-windows) 2) 
     (let* ((this-win-buffer (window-buffer)) 
     (next-win-buffer (window-buffer (next-window))) 
     (this-win-edges (window-edges (selected-window))) 
     (next-win-edges (window-edges (next-window))) 
     (this-win-2nd (not (and (<= (car this-win-edges) 
        (car next-win-edges)) 
        (<= (cadr this-win-edges) 
        (cadr next-win-edges))))) 
     (splitter 
      (if (= (car this-win-edges) 
      (car (window-edges (next-window)))) 
      'split-window-horizontally 
     'split-window-vertically))) 
    (delete-other-windows) 
    (let ((first-win (selected-window))) 
     (funcall splitter) 
     (if this-win-2nd (other-window 1)) 
     (set-window-buffer (selected-window) this-win-buffer) 
     (set-window-buffer (next-window) next-win-buffer) 
     (select-window first-win) 
     (if this-win-2nd (other-window 1)))))) 

(global-set-key (kbd "C-x |") 'toggle-window-split)