いよいよLionが秒読み段階に入りました。内蔵HDDをSSDに換装して準備はバッチリ、いつリリースされてもいいのですが、一方では新機種発売の噂も……取材で外出することも多い身、機動性バツグンのMacBook Airだったらポチってしまいそうです。おそらく、Lionプリインストールでしょうしねえ。

さて、今回は「iTerm2」について。OS Xには、その名もズバリ「Terminal」(以下、混同を避けるためTerminal.app)というターミナルエミュレータが標準装備されているが、さまざまな理由からYet Anotherなターミナルエミュレータを求める向きも少なくない。先日、iTerm2がめでたくバージョン1.0を迎えたため、ここに紹介する次第だ。

A Brief History Of "Terminal"

いきなり思い出話で恐縮だが、NEXTSTEP/OPENSTEPに付属の「Terminal」は完成度が高かった。特に日本語対応という点を考慮すれば、当時世に出回っていた他のターミナルエミュレータの追随を許さなかったのではなかろうか。ClareなどのIMを利用した日本語入力はもちろん、等幅フォント(モリサワ)を表示してもズレはなく、表示速度も申し分なかった。

それがOS Xに代替わりすると、事態は一変した。NEXTSTEP/OPENSTEPの日本語周りはCanon主導で開発が進められていたため、コードなど知的資産の継承がなされなかった……かどうかは定かでないが、事実最初のCheetah(v10.0)では日本語などマルチバイト文字サポートがスコンと欠落した形でリリースされた。デフォルトのシェルがbashに変更されたPanther(v10.3)の頃にはだいぶ改善されたが、日本語入力を含め一応の水準をクリアしたのはTiger(v10.4)以降のことだ。

Snow Leopard(v10.6)の現在、Termnal.appのターミナルエミュレータとしての実装は一段落している状態だ。透過背景やタブ化など、便利な機能もいろいろ追加された。しかし、ANSIカラーを変更できないとか、それでは飽きたらない層もいるわけで……iTerm2の開発が進められるのも、ターミナルエミュレータという奥深いアプリケーションならではの事情といえる。

NEXTSTEP 3.3JのTerminal.app。ターミナルエミュレータとしての機能はしっかりしていた

Snow LeopardのTerminal.app(v2.1.2)。このレベルにたどり着くには数年の時間を要した

iTerm2のココがポイント

ここに紹介するiTerm2は、Terminal.appに優るとも劣らない機能を備えたターミナルエミュレータ。約10年前から開発されている「iTerm」の派生版であり、Terminal.appにない機能をいくつも備えている。なかでも特徴的な機能をピックアップし、紹介してみよう。

ANSIカラーを自由に着替える

iTerm2を選ぶユーザの多くが、使用できる色数を理由に挙げているらしい。Terminal.appのANSIカラーは8色限定で変更できないが、iTerm2ならばカラーパレットを使い256色表示ができる。色の組み合わせや背景画像などを含めた「テーマ」も利用できるので、カスタマイズ性という観点からもiTerm2に軍配が上がる。

表示色の設定やプリセット値の選択は、環境設定パネルの「Colors」タブで行う

vimでシンタックスハイライトを利用しているところ。この色を自分の好みに変更できるところがうれしい

マルチバイト文字をそれらしく表示

Terminal.appには、いまだにマルチバイト文字の扱いが難しい点がある。それは、他の記号に比べ「●」や「■」が小さく見えるなど、欧文フォントが優先表示されるゆえの問題もあるのだが、「▲」などの記号が半角の幅で表示されてしまうことがあるのだ。

iTerm2では、環境設定パネル「Text」タブにある「Treat ambiguous-width characters as double width」をチェックしておくと、この問題をある程度回避できる。これも、Terminal.appにはない機能だ。

「Treat ambiguous-width characters as double width」のチェック前(左)とチェック後(右)

入力補完機能

ファイルやディレクトリの入力補完は、シェルではお馴染みの機能だが、シェルから先のコマンドとは基本的に無関係。viやemacsで入力作業を行う場合、それらコマンドが対応しなければならない。

しかし、iTerm2の入力補完機能(Command-;)を使えば、ファイル内で既出の単語をサーチし、候補に表示してくれる。関数など長めの文字列を入力するとき、重宝することだろう。

接頭語が同じ文字列を繰り返し入力するときには便利

選択した範囲のテキストがクリップボードへ

Terminal.appでは範囲選択後にコピー(Command-C)を明示的に実行しないかぎり、テキストがコピーされることはない。しかしiTerm2では範囲選択するだけで、その範囲のテキストがクリップボードへ取り込まれる。Emacsに慣れているユーザには、意外に便利な機能だろう。

範囲選択後、スティッキーズにペーストを実行したところ

全タブをExpose風に表示

複数のタブを設けてはみたものの、どこでなにをしているかサッパリ……という場合には、Expose風のタブ一括表示機能を使おう。メニューバーから「Window」→「Expose all Tabs」を実行すれば、現在開いているタブがデスクトップ上にExpose風画面で表示されるはずだ。

Option-Command-Eというキーアサインさえ覚えておけば、結構便利に使えるExpose風画面