hnwの日記

Emacs使いが幸せにiTermとTerminal.appを使う方法

今回はMacOSXユーザーかつEmacsユーザーの人にのみ関係する話題です。要はKeyRemap4MacBook使うといいよ!ってことです。


以前の記事「一部のCommand+?だけをMeta+?として使うKeyRemap4MacBookパッチ」のパッチに問題があったので修正してみました。これを改めて紹介します。修正してから10日以上使っていますが、僕は違和感なくiTermで作業できています。(Terminal.appでも問題なく使えます)

Emacs病とMac

Emacs病が悪化してくるとmetaキーを頻繁に使うようになってきます。Macの標準的なEmacsであるCarbon EmacsではデフォルトでCommandキーがmetaキーの意味になっているので、そのままの設定で使っている人が多数派なのではないでしょうか。


一方で、Terminal.appの初期設定ではmetaキーが利用できません。「環境設定」-「キーボード」-「メタキーとしてoptionキーを仕様」でOptionキーをmetaの意味にすることはできるのですが、Commandキーをmetaにする方法はありません。Terminal.appに合わせてEmacsでもOptionをmetaにしている人も居るようですが、僕はCommandで統一することにこだわってみました。

そこでKeyRemap4MacBook

この問題への対策として、KeyRemap4MacBookが利用できます。現状のKeyRemap4MacBookでは、下記の設定ができます。

  • iTermとTerminal.appだけ、左CommandをOptionに変更(英語キーボードの人用)
  • iTermとTerminal.appだけ、英数をOptionに変更(日本語キーボードの人用)

これでCarbon EmacsとTerminal.appと、両方でCommandキーをmetaの意味で使えるようになります。この設定で幸せな人も多いのではないでしょうか。

でもCommand+vでペーストしたい

ところが、このような設定にしてしまうとTerminal.appにCommand+vでペーストができません。Macに慣れてくると、Macっぽいキー配列も使いたくなるんです。そこで、一部キーとの組み合わせのみ、左CommandをOptionに置き換えるパッチを書きました(ダウンロード:http://hnw.sakura.ne.jp/KeyRemap4MacBook-5.1.0-hnw-patch-20081205.txt)。いつでもCommandキーをmetaキーとして扱うのではなく、自分がmetaキーとして利用したい組み合わせだけ置き換えれば十分、という発想です。


iTermはこの置き換えを行っただけでは動作しないようでしたので、Command+[何かのキー]をESC [何かのキー]の2ストロークに置き換えるような設定も作りました。僕はこの設定で常用していますが、iTermでもTerminal.appでもストレスなく作業できています。


また、前回のパッチではキーリピートの扱いが上手くできていなかった点を修正し、Command+{L,U}などの設定を追加しました。

ビルド

ビルドは意外なくらい簡単で、Macユーザーなら誰でもできます。開発環境が付属してくるOSって素晴らしいですね。

$ tar xvzf KeyRemap4MacBook-5.1.0.tar.gz
$ cd KeyRemap4MacBook-5.1.0
$ patch -p1 < ../KeyRemap4MacBook-5.1.0-hnw-patch-20081205.txt
$ make
$ open *.pkg

設定紹介

自分のパッチに関して言うと、現在下記のように設定しています。

  • Terminal.appとiTermのみについて
    • Command+{B,D,F,G,L,N,P,U,W,X,<,>}→ESC {B,D,F,G,L,N,P,U,W,X,<,>}
    • Command+{C,V}など→そのまま



各自のEmacs病の深刻度に応じて調整すれば幸せになれるはずです。


本パッチを先ほど作者さんにメールしてみました。いずれ本家に取り込まれればいいなあ。