本当は怖いHPC

HPC屋の趣味&実益ブログ

PuTTY上のemacsでマウスを使う

要約:
下記のような手順で、PuTTYSSH接続して使う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を押しながらクリックすることで可能だ。

【広告】