emacsのmulti-termでzshを使う設定

Emacsのshell-modeは補完がきかないしやっぱりtermだよな!で、termならmulti-termだよな!
ということで、今までやろうやろうと思っていながら放置していた、multi-termでzshを動かす環境を作った

環境はCocoa Emacs 23.1
termのなかでvim動くしipython動くし、つまりはほぼフル機能のターミナルが動いている。
おかげで標準のターミナルいらないぐらい便利です。


まずはzshの設定

Mac標準zshは日本語回りに問題があるらしいのでmacportszshをいれる(とはいっても、zsh使う人ならやってるだろうが)

sudo port install zsh-devel +mp_completion +pcre

~/.zshrcに追記

[[ $TERM = "eterm-color" ]] && TERM=xterm-color

これがないと、[delete]キーがSpaceの挿入になってしまっていた。zsh以外はちゃんと動いていた。

Emacs

Emacsでauto-installをいれてる場合、

M-x auto-install-from-emacswiki
multi-term

なければここから


次にucs-normalizeをいれる (Emacs23.2から不要とのこと)
ここから落として~/.emacs.d/elispにいれておく


~/.emacs.elの設定

;;term
(require 'multi-term)
(setq multi-term-program shell-file-name)
(add-hook 'term-mode-hook '(lambda ()
			     (define-key term-raw-map "\C-y" 'term-paste)
			     (define-key term-raw-map "\C-q" 'move-beginning-of-line)
			     (define-key term-raw-map "\C-f" 'forward-char)
			     (define-key term-raw-map "\C-b" 'backward-char)			     
			     (define-key term-raw-map "\C-t" 'set-mark-command)			     
			     (define-key term-raw-map (kbd "ESC") 'term-send-raw)
			     (define-key term-raw-map [delete] 'term-send-raw)
                             (define-key term-raw-map "\C-z"
                               (lookup-key (current-global-map) "\C-z"))))
(global-set-key (kbd "C-c n") 'multi-term-next)
(global-set-key (kbd "C-c p") 'multi-term-prev)
(set-language-environment  'utf-8)
(prefer-coding-system 'utf-8)

(require 'ucs-normalize) 
(setq file-name-coding-system 'utf-8-hfs)
(setq locale-coding-system 'utf-8-hfs)
(setq system-uses-terminfo nil)


すごーーーーく環境依存な気がするのですが、とりあえずこれで一通り動くようになると思います