Text Editors All Around/Sublime Text 2

Last-modified: 2014-11-09 (日) 12:30:52 (1016d)
SublimeText2.png

Windows / Mac / Linuxで使えるマルチプラットホームなテキストエディタ。
詳細なキーバインディングやスクリプトによる機能拡張の他、入力をサポートする各種機能が標準で装備されており、もはやEmacsに匹敵する「環境」と言っていいほど超強力なエディタである。

 
 
 

各機能レビュー

公式WEBサイトのトップページに記載されている各機能について、それぞれレビューする。

GoTo Anything

ファイルの開き方やカレントウインドウ/カレント行に移動するやり方がいろいろ用意されている。
例えば command + o でフォルダを指定して開くと、サイドバーにフォルダ内のファイルがツリー状に 一覧化されて選択可能になる。イメージ的にはWindowsのエクスプローラっぽい感じ。
また、command + p で表示されるテキストボックスにファイル名の一部の文字を入力すると、 現在開いているファイルやサイドバーに表示されているファイルをインクリメンタルサーチで 素早く絞り込んで開く事が出来る。
その際、ファイル名の一部に加えて以下のような文字を入力するとより細かい絞り込みが可能になる。

シンボル機能入力例結果例
@マーク当該ファイル中のシンボルを絞り込むspj@winsample.js内の「win」を含むシンボルを一覧表示
#マーク当該ファイル中のキーワードを絞り込むspj#winsample.js内の「win」を含むキーワードを一覧表示
(正直、@マークとの違いがよくわからん)
:マーク当該ファイルの行番号にジャンプするspj:100sample.jsの100行目にジャンプする

Googleの検索絞り込みをさらに細かくしたような使用感で、使いこなせばファイルを探す手間が劇的に省けそうだ。

Command Palette

command + shift + Pでコマンドパレットが表示される。
いろいろ設定を変えることが出来る模様。
上の検索と同じく、インクリメンタルサーチで対象を絞り込めるのは便利。
まあ何と言うか、そうですか、という程度。
普段よく使うコマンドはキーバインディングで設定しておくと思うので、この機能はあんまり使わないかも。

Split Editing

ウインドウを分割して複数のファイルを表示/編集できる。
例えば同じファイルの別の場所を表示できれば、いちいちスクロールせずに離れた場所を参照しながら編集できて便利なので、そういう機能なのかと思っていたんだけどどうもそういうものではないらしい。
これなら単純にウインドウを2つ並べりゃいいだけのような気がしないでもない。

Customize Anything

キーバインディング、メニュー、スニペット、マクロ、オートコンプリートなど、カスタマイズできる部分が多岐に渡っているため、かなり細かく自分好みにカスタマイズ出来る。設定はJSONファイルで記述する。XMLでなくて良かった。*1
たとえばキーバインディングはこんな風に記述する。

[
  //ダイアモンドカーソルの設定
  { "keys": ["ctrl+d"], "command" : "move", "args" : { "by" : "characters", "forward" : true } },
  { "keys": ["ctrl+s"], "command" : "move", "args" : { "by" : "characters", "forward" : false } },
  { "keys": ["ctrl+e"], "command" : "move", "args" : { "by" : "lines", "forward" : false } },
  { "keys": ["ctrl+x"], "command" : "move", "args" : { "by" : "lines", "forward" : true } },
]

Multiple Selections

複数の部分を一度に編集することが出来る。例えば検索して該当する箇所が複数あった場合、その選択状態のまま編集することで一度に同じ変更を適用できる。これはなかなか便利。普通のエディタで同じような事をやろうと思うと、たぶん一括置換になるだろう。あまり変わりはないが、こちらの機能の方がリアルタイムで編集される様を確認出来るのでより間違いにくいと思われる。

Distribution Free Mode

要するにフルスクリーンモードだが、サイドやらタブやらも消してしまって往年のスクリーンエディタのような雰囲気になる、というもの。余計なところにフォーカスが移らないので、昔気質な開発者にはうれしいのかも。

Instant Project Switch

Sublime Text 2ではディレクトリをプロジェクトとして保存することが出来る。
このプロジェクトを、先に書いた「GoTo Anything」と同じような方法で簡単に切り替えることも出来る。
Sublime Text 2の「プロジェクト」という機能は複数ファイルを管理する機能として便利だが、他の開発環境との兼ね合いというか、相性はどうなのだろう。
例えばeclipseとかXcodeとかでコーディングしている人と共同で開発作業を進めている場合は、Sublime Textのプロジェクト管理ファイルが邪魔になるんじゃないかと思うが。
仕事なら開発環境も含めて規約を統一するはずだからあまり気にするところではないが、オープンソースの場合は好き勝手にやっているのでそういうファイルが邪魔になる事もあるだろう。やっぱり「コミットするな」的な規約が作られるのかな。

Plugin API

所定の形式でPythonスクリプト(2.6系)を書いて保存すると、プラグインとして一つのコマンドとして利用可能になる。
Pythonに慣れている自分や海外の開発者は大変ありがたいが、日本の場合はあんまりPythonを多用しないので苦々しく感じている人も多いことだろう。そういえば一昔前にあったAlphaというテキストエディタが内部のスクリプトエンジンにTclを使っていて、それを使いたいがためにTcl/tkを勉強したことがあったが、プログラマという人種は必要とあらばそういうことを普通にやるものなので問題ないだろう。それにEmacsのLISPみたいに難解でもないしAlphaのtclみたいにマイナーでもないので習得にはさほど時間もかからない。まあPythonを使い慣れていない人にとっては少しまどろっこしいところだとは思うけれども。
なお、どうやらSublime Text 2の「2」はPython 2.6の「2」のようで、開発中のSublime Text 3は内包しているのがPython3のようである。
ちなみにプラグインを作るにはToolsメニュー→New Plugin...から雛形を開いて肉付けしていくのが簡単で良い。

Cross Platform

Linux / Windows / Mac で動く。仕事ではWindows、家ではMacと古いノートに入れたLinuxを使っている自分にとって、同じエディタがなかったのでほぼ諦めていた*2が、 これでやっと統一出来そうだ。まあ、会社では勝手にアプリケーションをインストール出来ないという問題があるのでやっぱり難しいのかもしれないけど。
ところでプラグインで使っているPythonは環境に入っているものを使うのだろうか?それともSublime Text内部に内包しているのだろうか。Python2系と3系では言語仕様が結構変わっているので、どのPythonを使っているかによっては統一がまた難しくなる。
とはいえ、設定ファイルの管理だけで統一的に使えるのはありがたい。

結論

使おう。うむ。


*1 一時期アホほどもてはやされたXMLだが、データ記述言語としては人間にとっても機械にとっても扱いづらいのに、なんで採用されるんだか当時から不思議でならなかった。
*2 Emacsがいい感じだったがWindows版の出来がサッパリだったので諦めた

添付ファイル: fileSublimeText2.png 209件 [詳細]