Sublime Text2でプラグインを作る

2012.11.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Sublime Text2とは

最近人気上昇中のテキストエディタで、動作が軽く、Windows/Mac/Linuxで動作します。
設定ファイルはJSON形式で記述し、pythonを使って拡張することができます。
弊社でも何人か実際に使用しているようで、Sublome Text2に関する記事もあります。

Sublime Text2のプラグイン

Sublime Text2の特徴として、プラグインの存在があります。
プラグインを使えば、Sublime Text2の機能を拡張し、通常ではできないさまざまな処理を行うことができます。
Sublime Text2ではPythonを用いてプラグインを作成します。
では簡単なプラグインをつくってみましょう。

環境構築

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.4
  • Sublime Text2 : 2.0.1

プラグインを作る

Sublime Text2でプラグインを作成するのは簡単です。
メニューからTools->New Plugin...と選択してください。下記のようなプラグインのテンプレートが作成されます。

import sublime, sublime_plugin

class ExampleCommand(sublime_plugin.TextCommand):
	def run(self, edit):
		self.view.insert(edit, 0, "Hello, World!")

これは実行すると開いている画面の先頭に「Hello, World!」というテキストを挿入する処理を行います。

プラグインのテンプレート内容を少し見て行きましょう。モジュールのimportに続き、クラスの定義をしています。

import sublime, sublime_plugin

class ExampleCommand(sublime_plugin.TextCommand):

このクラス名からCommandを除き、スネークケースにしたものがコマンド名になります。この例でいえば「example」がコマンド名です。
もしクラス名を「MyFirstPluginCommand」とすれば、コマンド名は「my_first_plugin」となります。
そして、TextCommandというクラスを継承しています。プラグインのために継承するクラスはこれ以外にもいくつかあります。
TextCommandクラスを継承すると、self.viewフィールドから現在開いている画面に対してアクセスすることができます。

ExampleCommandはrun関数を実装しています。これがコマンド実行時に実行される関数です。
ここで現在開いている画面の先頭に文字列を挿入しています。

	def run(self, edit):
		self.view.insert(edit, 0, "Hello, World!")

ではこのプラグインのテンプレートをそのまま保存しましょう。
保存しようとすると、Sublime Text2のUserディレクトリがデフォルトで指定されます。
ここに保存してもいいのですが、あまりこのディレクトリに余計なものを置きたくない場合は
その1つ上の階層に適当なディレクトリを作成し、そこに保存してもかまいません。
なお、ファイル名は特に決まりはありません。

準備ができたので、実行してみましょう。
今回のコマンドはキーを割り当てていないので、コンソールから実行します。
ctrl + shift + `でコンソールを立ち上げ、下記コマンドを入力してください。
※クラス名の変更した場合は引数を適宜変更

view.run_command('example')

画面の先頭に文字列が挿入されたはずです。
非常に簡単にプラグインを作成できました。

まとめ

今回はSublime Text2のプラグインをうごかしてみました。
実際に実用的なプラグインを作成するには、公式APIリファレンス 等を参考にしてみてください。