TextMateはすてきだ

Rubyの勉強をするのにMac上のエディタを探している。TextMateが評判になっていたので日本語が通らないことを知りつつも試用してみた。で、そのすばらしさに気持ちはRegistrationに向かっている。

1. 強力な入力補完機能はeditingを楽しくする
2. 関連ファイルをいっぺんに
3. そこからすぐ実行できる
4. ブロックを示す矢印が目安
5. 奥はどこまで?

1. 強力な入力補完機能はeditingを楽しくする

TextMateにはさまざまな入力補完機能がある。その1つがAuto-Pairingという機能で、括弧やクオートの一方を入力するとその対を自動補完してくれる。例えば、

print("hello

と入力すれば、

print("hello")

が入力済みとなる。入力した括弧を消すと自動補完された相手も消える。閉じ側の括弧を自分で入力すれば自動補完は上書きされてダブらない。さらに、上記の入力に続けて command + return でカーソルは括弧を抜けて次行に移る。control + E で指がつりそうな僕にはこの括弧抜けは気持ちがいい。また、先に括弧でくくりたい文字列を範囲指定してから一方の括弧を打つと他方の括弧を補完した後にカーソルは括弧の外に出る。
別の入力補完機能としてBundlesというものがある。これは言語ごとに定義された定型入力を支援するもので編集も可能なようである。操作はキーワードを入力した後に Tab を打って実現する。例えば、Rubyでは、classと入力した後に Tab を打つと、

class ClassName

end

と補完され、続けてクラス名を入力し、さらに Tab を打つと、ClassNameが入力したクラス名に置き換えられて、カーソルはインデントされたclassとendの間の行に飛ぶ。claと入力して Tab を打つと、クラスのテンプレートメニューがでる。また、ifeと入力した後に Tab を打つと、

if condition

else

end

と補完され、続けて条件、Tab、第1実行文、Tab、第2実行文、Tab、と入力すれば、if else節の入力が完了してカーソルはその外にでる。each、Tab と入力すれば、

each { |element| element. }

となって、次いで i と入力すると、

each { |i| i. }

となってドットの後にカーソルがくる。とにかくキーワード、Tab だ。また、メソッド名(myMethod)を打ってからshift + return で

def myMethod(args)

end

が補完され、カーソルはargsの書き換え位置にくる。引数が要らなければDelキーを押す。他にも初期設定で多数のキー割当がなされている。bundleメニューでそれが簡単に確認できる。
TextMateには ESCキーでの入力補完機能もある。同じドキュメント内で使用されたワードの先頭文字を入力し ESC で残りを補完する。選択肢が複数ある場合は ESC を繰り返すことで置き換える。
また、複数行に対する同時編集機能もある。例えば、

print "hello world"
print "yellow world"
print "follow world"

を、

print "hello Japan/n"
print "yellow Japan/n"
print "follow Japan/n"

に修正したい場合、範囲指定して、alt + command + A で同時編集モードに入ることができる。10本の指で100以上のキーを相手にする身としてはTextMateの強力な入力補完機能は非常に助かる。簡潔な記述のRubyによるプログラミングがいっそう楽しくなりそう。

2. 関連ファイルをいっぺんに

TextMateでは複数のファイルをフォルダごとまとめて開ける。DrawerにフォルダをDragすれば終わり。今回僕はThe Little Book of Rubyを読むにあたってTextMateを試用した。The Little Book..には、各章ごとにフォルダ分けされたサンプルコードが添付されていた。僕はそれを、TextMateのDrawerにドラッグするだけで対象ファイルをすべて開けるようになった。

3. そこから実行できる

command + R で開いているコードを即時実行できる。コードの中で入力が求められる場合、入力ボックスが現れる。打ったものをすぐ試せるというのがScriptingの醍醐味だろうからTextMateはそれをより快適にする。

4. ブロックを示す矢印が目安

入力エリアの左のガータに、コードのブロック単位(def..end, begin..end, {}など)の矢印が自動表示される。これでブロックの起点と終点マーカのペアリングを迷うことがなくなる。また、矢印を操作することで対象のブロックの表示上のオープン/クローズを制御できる。

5. 奥はどこまで?

初期状態でこれだけの利便性を感じさせてくれるエディタはすごい。センスの良さを感じる。まだまだこのエディタは奥が深そうだ。使い込むほどに味がでるのではと期待させる。


一方で問題点はやはり日本語だ。日本語が通らないどころか、誤って日本語モードで入力するとしばらく入力が利かなくなる。これはちょっと困るので回避策がほしい。それを差し引いてもTextMateは僕にとってのプログラミングの勉強における最良のMateになりそうだ。