emacsのmulti-termでzshを使う設定
Emacsのshell-modeは補完がきかないしやっぱりtermだよな!で、termならmulti-termだよな!
ということで、今までやろうやろうと思っていながら放置していた、multi-termでzshを動かす環境を作った
環境はCocoa Emacs 23.1
termのなかでvim動くしipython動くし、つまりはほぼフル機能のターミナルが動いている。
おかげで標準のターミナルいらないぐらい便利です。
まずはzshの設定
Mac標準zshは日本語回りに問題があるらしいのでmacportsのzshをいれる(とはいっても、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)
すごーーーーく環境依存な気がするのですが、とりあえずこれで一通り動くようになると思います