emacs の ウィンドウ管理

デフォルトでは、「C-x 1」でウィンドウを一つに、「C-x 2」でウィンドウを上下に2つに、「C-x 3」でウィンドウを左右に2つに、「C-x o」で他のウィンドウに移動する設定になっているが、いまひとつ使いにくい。そのため
http://d.hatena.ne.jp/rubikitch/20100210/emacs
http://shibayu36.hatenablog.com/entry/2012/12/18/161455
http://d.hatena.ne.jp/yascentur/20110621/1308585547
http://coffee.guhaw.com/Entry/211/
らを参考に「init.el」に以下を書き加えている。

;;; miyazaki-window.el --- 
;;
(defun split-window-vertically-n (num_wins)
  (interactive "p")
  (if (= num_wins 2)
      (split-window-vertically)
    (progn
      (split-window-vertically
       (- (window-height) (/ (window-height) num_wins)))
      (split-window-vertically-n (- num_wins 1)))))
(defun split-window-horizontally-n (num_wins)
  (interactive "p")
  (if (= num_wins 2)
      (split-window-horizontally)
    (progn
      (split-window-horizontally
       (- (window-width) (/ (window-width) num_wins)))
      (split-window-horizontally-n (- num_wins 1)))))
(defun other-window-or-split ()
  (interactive)
  (when (one-window-p)
    (if (>= (window-body-width) 270)
        (split-window-horizontally-n 3)
      (split-window-horizontally)))
  (other-window 1))
(global-set-key "\C-t" 'other-window-or-split)
(global-set-key "\C-x!" 'follow-delete-other-windows-and-split)
(global-set-key "\C-x@" '(lambda ()
                           (interactive)
                           (split-window-vertically-n 3)))
(global-set-key "\C-x#" '(lambda ()
                           (interactive)
                           (split-window-horizontally-n 3)))

こうすると、「C-t」を押せば、自動的に2つに分割するか、他のウィンドウに移動する。また、「C-x !」とすれば、一つのファイル 2 つのウィンドウに分けて、シームレスに表示できる。「C-x @」とすれば、3 つのウィンドウに横で分けて、「C-x #」とすれば、3つのウィンドウに縦で分ける。なお、「!@#」はそれぞれ英語キーボードで「123」の上にある記号なので、日本語キーバインドだと適当に配置しなおせばよい。

emacs の ウィンドウ管理」への1件のコメント

  1. ピンバック: emacs で最近使ったファイルを簡単に開く | miyazakikenji

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中