PuTTY上のemacsでマウスを使う
要約:
下記のような手順で、PuTTYでSSH接続して使うemacsにおいて、マウスによるカーソル移動・領域選択・マウスホイールによるスクロールなどができるようになった。ただし、PuTTYとemacs22の組み合わせでは、ホイールによるスクロール時に無害なエラーがでる。
.emacsで、
(xterm-mouse-mode 1)
とすると、マウスによる領域選択とかスクロールが使えるのだ!…ということを今さら知ってやってみたものの、
<mouse-1> is undefined
とか、
Wrong type argument: number-or-marker-p, nil
のようなエラーメッセージが出ていて動かない。一応マウスは認識しているようなので、ちょっと直せばなんとかなるんじゃないかと思ってやってみた。
結論から言うと、PuTTY + emacs22の場合、動作はするけど毎回 "Wrong type argument: number-or-marker-p, nil" というエラーが出る(実害はない)。どうやら、PuTTY + emacs22 で起こる問題のようだ。だから、Linux等のターミナルエミュレーター使ってる人はエラーは出ない(はず)。実害はないので、気にしなければいいだけの問題かもしれない。screen の visual bell を設定している人は厳しいかもしれない。この問題はemacs23では修正されているので、(コンパイルして確認済み、ここも参照)、どうしてもというならemacs23に乗り換えるしかない(あるいはemacs22にパッチを当てるか)。自分の場合はマウスだけの理由でemacs23に乗り換えるのはちょっと厳しいので、エラーが出つつも無視して使うという作戦に出ることにした。
というわけで、エラーが出ながらも動作するところまでセットアップしてみた。どうやらX無しの環境で自前でコンパイルすると必要なモジュールが入らないらしいので、(使わないけど)X付きでコンパイルすることにした。
X関係のヘッダを入れるために、
$ sudo yum install libXaw-devel
が必要だった。自分の環境ではこれ1つでOKだったけど、他の環境ではもっと必要かも。
記述時点での最新版 emacs22.3 をダウンロードしてきてコンパイル。
$ wget ftp://ftp.ring.gr.jp/pub/GNU/emacs/emacs-22.3.tar.gz $ tar -xzvf emacs-22.3.tar.gz $ ./configure --with-x-toolkit=yes $ make && sudo make install
次に、.emacs に、
(xterm-mouse-mode t) (mouse-wheel-mode t)
の2行を追加。
$ emacs -nw
でコンソール上でemacsを起動すると、xterm-mouse-modeが有効になっている。
- 左クリックでカーソル移動
- 右クリックで領域選択(カーソル位置からクリック位置まで選択)
- 中クリックで貼り付け
ができるようになる。
領域選択はちょっと動作がもっさりしているが、どちらかというとホイールによるスクロールが目当てだったので無問題。ちなみに、PuTTY本来の動作(選択で自動コピー、左クリックで貼り付け (設定による))はShiftを押しながらクリックすることで可能だ。