Mac OS XでPlan 9テイストを堪能

Plan 9のコマンドをUNIXに移植したPlan9portの存在については何度も書いているが、もっと日常生活にも使って行こうという話。9termとacmeを使えば、かなりPlan 9テイストが満喫できる。

以前も書いたがRuss CoxはMac OS X上で9termとacmeを常用しているようだ。そこで、Russ Coxが使っている9term.appを改造したものをgithubにコミットした*1。これをTerminal.appの代わりにDockに登録するだけで、Plan 9経験値が急上昇すること請け合いだ。

肝はContents/MacOS/9termというシェルスクリプトで、オリジナルからの変更点はフォントをunicodeに、plumberの起動、シェルをrcにの三つだ。単なるシェルスクリプトなので、後はお好きにカスタマイズを。アイコンはTerminal.appと同じだが、Info.plistを変更すればGlendaのアイコンなどいくらでも変更可能だろう。

使い方のTIPSとしてはこんな感じかな。他にもいろいろありそうだけど。

  • Plan 9Mac OS Xでコマンド名がバッティングする場合は、9コマンドを使う。これはPlan 9コマンドを優先し、なければネイティブOSのコマンドを実行する。
  • 「B ファイル名」でacmeにウィンドウが開く
  • Ctrl-fでファイル名補完*2
  • 行末よりも右側をダブルクリックすると行全体が選択される。このままsendを実行してもプロンプトを無視して実行されるので便利。これは「fn cpu%{ $* }」みたいな感じでプロンプト文字列を同名の関数が定義されているから。Plan 9の場合は$home/lib/profileで定義されているけど、Plan9portとは違うので、$PLAN9/rcmainで「fn % { $* }」を定義しておけばよい。でも、「%」は何かに使われそうだからちゃんとプロンプト文字列は定義した方がよいかも。

問題は日本語のインプットメソッドがちゃんと動かないことかな。ここはCarbonプログラミングを少し勉強しないといけなそう?

*1:以前、drawtermをapp化するエントリ「Drawterm.app」を書いていた。

*2:@murachueさんによるとPlan 9の場合はrioが補完を担当しているが、Plan9portの場合は9term内部で担っている模様。