Emacsでウィンドウ間の移動をもっと楽にしよう

Emacsではウィンドウを分割した際,C-x o でウィンドウ間の移動ができます.
しかし,よく使う機能にもかかわらず,2ストローク必要とします.*1
さらに画面を3つ以上に分割した場合は思ったところに1回で飛べるとは限りません.*2
これは非常に生産性が落ちてよくないですね.
したがって,1ストロークで,かつ狙ったところにいけるのが望ましいキーバインドです.
僕は以下のように割り当てています.(Vimのカーソル移動風に)

;; 反対側のウィンドウにいけるように
(setq windmove-wrap-around t)
;; C-M-{h,j,k,l}でウィンドウ間を移動
(define-key global-map (kbd "C-M-k") 'windmove-up)
(define-key global-map (kbd "C-M-j") 'windmove-down)
(define-key global-map (kbd "C-M-l") 'windmove-right)
(define-key global-map (kbd "C-M-h") 'windmove-left)

これだと 以下のように移動できます.

Ctrl-Alt-k
Ctrl-Alt-j
Ctrl-Alt-l
Ctrl-Alt-h

また,例えば左右分割して左側にいるときにwindmove-leftをしても通常は意味ないですが,
(setq windmove-wrap-around t)を設定することで反対側に行きます.(この場合右側)
つまり,左右2分割の場合だとwindmove-right(もしくはwindmove-left)だけで
どっちにも行けちゃうわけです.
2分割にすることが一番多いと思うのでキーバインドがうろ覚えでも安心ですね.


あと,僕は使っていませんが以下の設定をすることで Shift + カーソルキーで移動できるようになります.

(setq windmove-wrap-around t)
(windmove-default-keybindings)


ウィンドウ移動のキーバインドはあまり見かけないので設定を公開してみました.
私はこのキーに割り当ててます!っていうのがあればぜひ教えてください.

*1:ここでは Ctrl Meta などはストロークに数えないことにします

*2:C-x o を押すたびにたぶん半時計回りに移動します.