ansi-term

emacs上でも M-x shell と打てばシェルが使えるのだけど、使い心地があまり本物に近くなくて、今まであんまり使っていませんでした。
が、どうやら ansi-term というより使いやすいシェルがあるらしいので、試してみました。M-x ansi-term で起動します。

使用感は上々。本物とほとんど同様に動いてくれます。shellのようにBackspace打ちすぎるとプロンプトまで消えてしまうようなこともありません。

早速C-tに割り当てたのですが、ここで困ったことに気付きました。ansi-termは起動するたびに新しいターミナルを開くのです。既に立ち上がってるならばそちらを選択するようにしてほしい。そんなにいくつも端末いらないよ。

どうすればいいのかグーグル先生も教えてくれなかったので、勘でElispを書いてみました。

(global-set-key "\C-t" '(lambda()
                          (interactive)
                          (if (get-buffer "*ansi-term*")
                              (switch-to-buffer "*ansi-term*")
                            (ansi-term "zsh"))))

普段は bash 使いですが、今回はなぜか zsh

「オレオレ設定に慣れてしまうとICPC本番で辛いだろうな」と思って .emacs の改造は今まで意識的に避けてきていたのですが、これぐらいなら1分あれば書けるし、問題ないかなと思います。
むしろ、LispElispもまともに書いたことが無いので、この5行を書くのに3時間弱掛かってしまったことの方が問題と言えます。