フレーム間のフォーカス移動に便利なframemove

はじめに

Emacsでは複数のフレームを立ち上げることが可能なことは周知の通りだろう。
C-x 5 2で新規フレーム作成、などである。
デュアルディスプレイ環境では複数フレームを立ち上げて作業、ということも珍しくはない。

本稿では作成したフレーム間でのフォーカス移動を手軽に行うためのパッケージを紹介する。
それがframemoveである。

インストール

オリジナルのソースコードは以下にある。
http://www.emacswiki.org/emacs/framemove.el

MELPAからもインストール可能である。

M-x package-install framemove

このコードをベースに筆者がEmacs 24.3上でのバイトコンパイルの警告をなくし、かつ幾つかのパッチを当てたのが以下となる。
https://gist.github.com/tam17aki/c1978602ae14745611c2

設定

以下を設定ファイルに記述することで、M-up、M-down、M-left、M-rightがフォーカス移動として利用可能となる。

(require 'framemove)
(framemove-default-keybindings)

Wind moveと併用したい人は以下の設定を試すといいらしい。
このあたりは個人の設定がからんでくるので万人には当てはまることはないだろう。
上記EmacsWikiのページも参考にして設定を色々と試すのがよいだろう。

(require 'framemove)
(windmove-default-keybindings)
(setq framemove-hook-into-windmove t)

使用法

例えば2つのフレームが左右に並んでいるときはM-left、M-rightで互いのフレームを行き来できる。上下ならばM-up、M-downである。
並んだフレーム位置がオーバーラップしてもフォーカス移動は問題なく直感的にできる。

注意すべきは、小さい方のフレームが大きい方のフレームに隠されてしまったときに大きい方のフレームからのフォーカス移動はできない、という仕様である。