iriya_ufo’s blog

Curiosity was simply the first derivative of knowledge.

Emacs の shell-mode で zsh のエスケープシーケンスを正しく表示する

GNOMEターミナル + Emacs という環境でずっと使ってますけど,
Emacs をメインに作業してる時とかに,ちょこっとシェル操作したいなぁと思うことがあります.
そんなちょろっとした作業のためにGNOMEターミナルに戻ってすぐにまた Emacs に戻ってっていうのはめんどいですよね.

んなわけで,Emacs で shell-mode を立ち上げたい.
しかし,zsh 使ってるとエスケープシーケンス*1が悪さをして表示がぐちゃぐちゃになるわけです.
その解決方法です.

  • .emacs に以下を付け足します.
(autoload 'ansi-color-for-comint-mode-on "ansi-color"
          "Set `ansi-color-for-comint-mode' to t." t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
  • .emacs を再読み込みします.
M-x eval-current-buffer
  • M-x shell-mode を立ち上げます.

確認してみたところ日本語含めちゃんと表示できました.
しかし表示はうまくいったものの,少し挙動がおかしいですね.
[TAB] での補完がうまくいくときとそうでない時があったり.
zsh をカスタマイズし過ぎなのが原因でしょうか?

でもまぁ,"ちょろっと" Emacs からシェル使う分には特に問題なさそうなんでしばらくこれでいきます.

メインはGNOMEターミナル使うお( ^ω^)

参考サイト
http://d.hatena.ne.jp/hiboma/20061031/1162277851