Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Emacs24.1 on Mac OS Xでmulti-term環境をつくる

Emacsでもshellが使えます。

M-x shell

で起動です。
が、この子はPATHが通っていないため、gitが未インストール扱いされたりしていました。
かといって、オレンジ表紙のあの子*1は何やらエキセントリックで普段使いには敷き居が高いですし。
というわけで、イケてない事は重々承知だったもののMacOSX標準のshellで何とかしていました。

ところが先日、ついに解決法が判明したのでコレを期にshell環境の更新を決心しました。

前提

そもそもmulti-termとは

  • 名前の通り、複数起動可能
  • 設定一つでBashZshも切り替え可能
  • emacs標準のキーバインドを邪魔しない。
  • その分、M-pで履歴戻り等々やや独特

といった特徴があります。

multi-term導入

折角なので、emecs24系の新機能を使います。
「M-x list-packages」と打って暫く待つ*2と、し以下のような出力を得ます。
f:id:shuzo_kino:20131006213224p:plain
emacsキーバインドが普通に使えるので「multiterm」と検索、冒頭で「i」->「x」
ミニバッファに確認する旨が出ますので、「yes」これだけでパッケージ導入が開始されます。

あとはお決まりの.emacs.elです。
流石に長いのでテキストエディタで入力します。

;; より下に記述した物が PATH の先頭に追加されます
(dolist (dir (list
              "/sbin"
              "/usr/sbin"
              "/bin"
              "/usr/bin"
              "/opt/local/bin"
              "/sw/bin"
              "/usr/local/bin"
              (expand-file-name "~/bin")
              (expand-file-name "~/.emacs.d/bin")
              ))
 ;; PATH と exec-path に同じ物を追加します
 (when (and (file-exists-p dir) (not (member dir exec-path)))
   (setenv "PATH" (concat dir ":" (getenv "PATH")))
   (setq exec-path (append (list dir) exec-path))))

;;multi-term
(setq load-path(cons "~/.emacs.d/" load-path))
(setq multi-term-program "/bin/bash")
(require 'multi-term)

最後の仕上げに、

M-x eval-buffer

これで.emacs.elが評価され、有効になります。*3

*1:irbsh

*2:外部鯖に接続している

*3:公式によれば Evaluate all the Emacs Lisp expressions in the buffer. なので一応バッファ中のelisp.emacs.elも含めて全部評価してくれるみたいです。