Emacsで画面分割のキーバインドを変えた

環境

本題

Emacsで画面分割(ウィンドウ分割)をするショートカットはデフォルトではC-x 2C-x 3に割り当てられているが、これは直感的じゃないし覚えづらいので自分でキーバインドを当てた。

以下のelispを書いた。

;;----------------------------------------------------------------------------
;; # 画面分割
;;----------------------------------------------------------------------------
;; C-x | で右にウィンドウを開いてカーソル移動
(define-key global-map (kbd "C-x |") (kbd "C-x 3 C-x o"))
;; C-x - で下にウィンドウを開いてカーソル移動
(define-key global-map (kbd "C-x -") (kbd "C-x 2 C-x o"))
;; C-x l で右のウィンドウに移動
(define-key global-map (kbd "C-x l") 'windmove-right)
;; C-x h で左のウィンドウに移動
(define-key global-map (kbd "C-x h") 'windmove-left)
;; C-x j で下のウィンドウに移動
(define-key global-map (kbd "C-x j") 'windmove-down)
;; C-x k で上のウィンドウに移動
(define-key global-map (kbd "C-x k") 'windmove-up)
;; C-x w で現在カーソルがあるウィンドウを削除
(define-key global-map (kbd "C-x w") (kbd "C-x 0"))
;; C-x q で現在カーソルがあるウィンドウ以外のウィンドウを全て削除
(define-key global-map (kbd "C-x q") (kbd "C-x 1"))

C-x | で画面を縦に分割、C-x -で横に分割するようにした。さらに分割後に分割したウィンドウにカーソルを移動するようにした。

さらにC-x lで右のウィンドウに移動、C-x hで左のウィンドウに移動、C-x jで下のウィンドウに移動、C-x kで上のウィンドウに移動するようにした。Vimライクなキーバインドになっているのは、かつてVimを使っていた自分にはわかりやすいから。

そして、C-x w でカレントウィンドウを消し、C-x q でカレントウィンドウ以外を全て消すようにした。

所感

elispよくわからないまま書いているせいで手探り感半端ない。自然と少しずつ慣れていければいいなあ。

参考