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