いろいろ苦労した末に、やっと emacs の multi-term 上でまともに zsh が動かせるようになったので、備忘録としてまとめる。multi-term や zsh のインストール方法は省略する。
端末制御文字が出る問題への対処
設定なしのまま起動すると 4m という文字が出た。M-r で bck-i-search した時も同じように、4m という文字が現れて崩れるため、まともに利用できなかった。
いろいろ調べた結果、emacs term で使う terminfo (端末制御文字と制御動作の対応表)がないのが原因らしい。あまりお目にかかることはないが tic というコマンドを使って、このファイルを作ってやればいいようだ。参考サイトによると、Emacs のインストールディレクトリに eterm-color.ti というファイルがあるはずだが、見当たらなかった。代わりに、コメント欄に書かれていたファイルを web からもらってきて、利用することにした。下のコマンドを実行後、emacs を再起動すると、4m のような制御文字は表示されず、期待した通り動くようになった。
curl https://opensource.apple.com/source/emacs/emacs-70/emacs/etc/e/eterm-color.ti\?txt > eterm-color.ti
tic -o ~/.terminfo eterm-color.ti
日本語が ???? になる問題への対処
multi-term 上で日本語が ???? になってしまうので、こちらにも対処した。
自分の環境下では、下の式を init.el に追記するだけで OK だった。
(setenv "LANG" "ja_JP.UTF-8")
参考にしたサイト
- emacs のシェルとターミナルのまとめ / http://blog.inouetakuya.info/entry/20110627/1309175529
- シェルとターミナルの違い / http://www.cc.kyoto-su.ac.jp/~hirai/text/shell.html
- terminfo とは何か / http://archive.linux.or.jp/JF/JFdocs/Text-Terminal-HOWTO-15.html
- tic コマンド / http://linux.die.net/man/1/tic
- emacs term で変な文字が出る / http://stackoverflow.com/questions/8918910/weird-character-zsh-in-emacs-terminal
- emacs term で日本語を正しく表示する / http://blog.inouetakuya.info/entry/20110624/1308878780