run_command

Posted by & filed under 開発.


開発部 川野です。最近、Sublime Text が流行っていますよね。私の周りでも、Sublime Text を使っている、というエンジニアが増えてきたように思います。 パワフルでモダンなエディタを探している方は、ぜひ一度試してみてはいかがでしょうか。

そんな Sublime Text ですが、魅力のひとつに便利なプラグインの存在があります。本記事では、Sublime Text のプラグイン開発について取り上げてみようと思います。

Hello, World!

Sublime Text のプラグイン開発を始めるのは、とっても簡単です。メニューバーの Tools > New Plugin.. を選択して下さい。雛形となるプラグインのコードが記述されたバッファを作ってくれます。Sublime Text のプラグインは、Python を使って書いていきます。

このプラグインは、バッファの一番最初に、「Hello, World!」という文字を挿入するだけの単純なものです。ファイルを保存して、実際に試してみましょう。

# 保存先のダイアログを開くと、User パッケージのディレクトリが選ばれた状態になっています。この場所に保存しても動作しますが、Packages ディレクトリに任意のフォルダを作って、そこに保存する方が望ましいです。

実行は、コンソールから行います。コンソールは、ctrl+` キーもしくは View > Show Console を選択して表示します。このコンソールは、組み込みの Python インタープリタ(バージョンは 2.6系)で、Sublime Text の API にアクセスできるようになっています。

サンプルのプラグインを実行するために、コンソールに以下のコマンドを入力して下さい。

ファイルの先頭に、「Hello, World!」の文字が挿入されたでしょうか?これでひとまず、プラグインを作ることができましたね。


# ソースコードの行頭に挿入されたテキストは、保存前に消しておくことを忘れずに :)

More detail..

Sublime Text には最初から、いくつかのプラグインが含まれています。メニューバーの Preferences > Browse Packages で Packages ディレクトリを開いてみて下さい。ここに、プログラミング言語別のプラグインと標準機能のプラグイン(Default)、標準機能のプラグインをカスタマイズするためのプラグイン(User)などが入っています。Sublime Text を使っている方は、何かしらのプラグインをもう既にインストール済みかと思います。それらもこのディレクトリにフォルダが作られていますので、眺めてみて下さい。

プラグインは、公式の API ドキュメントを参照しながら作っていきますが、一番頼りになるのは、ここにある実際のプラグインのソースコードだったりします。特に、Default のプラグインは、サンプル例となることを意識して作られているようなので、参考になります。

また、プラグインから組み込みのコマンドを呼ぶことができるのですが、どのようなコマンドがあるかを調べるには、キーバインディングの定義が参考になります。メニューの Preferences > Key Bindings – Default で keymap のファイルを開き、バインドしているキーからコマンド名を逆引きするのが効率のよいやり方です。

というわけで、私も早速、簡単なものを作ってみました。選択範囲に対して、任意の文字で囲むプラグインです。Vim の Surround.vim を意識してはいるのですが。。

囲みたい範囲を選択して、Ctrl-s, Ctrl-s とキーを打つと、下段に入力窓が現れます。

入力窓に、囲みたい文字を入力。選択領域の前後が、入力した文字で囲まれました。

インストールは、コマンドパレットで「Package Control: Add Repository」を選択し、以下の URL のリポジトリを追加して下さい。

sublime_surround:
https://github.com/kawanoshinobu/sublime_surround

上記は、このプラグインのソースコードを置いている GitHub のリポジトリです。その後、同じくコマンドパレットから「Package Control: Install Package」を選択して、「surround」と入力頂くと、追加した sublime_surround というパッケージ名が出てくるはずです。それを選択すれば、インストールは完了です。

このプラグインのソースコードは、以下になります。全然機能が足りてないので、Pull リクエストしてくれる方がいらっしゃれば大歓迎です。

Could not embed GitHub Gist 3327480: Not Found

まとめ

Sublime Text のプラグインを使った経験がある方はご存知かと思いますが、 Sublime Text は、かなり自由に拡張機能を作れるようになっています。Sublime Text はデフォルトでもかなり便利なエディタですが、それでも使っているうちに、不満な部分に遭遇することはあるかと思います。その時に諦めるのではなく、拡張機能を書いて問題を解決するのもまた楽しいと思います。ただ、エディタの拡張は中毒性があるので、のめり込んでしまった場合、私は責任を取れませんので、ご了承願います… ^^;

さて、Sublime Text をきっかけに、Python に興味が出てきた方に Python Conference Japan 2012 (略して PyCon JP 2012)のお知らせです。9月の15日(土)・16日(日)・17日(月祝)の3日間、品川の産業技術大学院大学を会場に Python のカンファレンスが開催されます。プログラムはこちら
実は縁があって、私も、Sublime Text をテーマに少しお話させて頂くことになっています。セッションでは、今回の記事よりもう少し突っ込んだ内容のお話をさせて頂こうと思っています。面白そうなセッションがたくさんありますので、9月の連休は Python にどっぷり浸かってみるのはいかがでしょうか。

というわけで、Sublime Text のプラグイン開発について、簡単にご紹介させて頂きました。


関連文書:

Comments are closed.