【入門編】Sublime Textのプラグイン開発入門:自分の理想を叶える独自機能の作り方 – 軽量・高機能テキストエディタ生産性向上バイブル

なぜ「Sublime Textのプラグイン」を書くべきなのか?

多くのエンジニアがVS CodeやCursorのような「オールインワン」なエディタに流れる中、あえてSublime Textを使い続ける理由は明確です。それは「驚異的な起動速度」と「エディタそのものを自由に拡張できるPython実行環境」がシームレスに統合されているからです。

Sublime Textのプラグイン開発は、単なるマクロ作成ではありません。エディタのコア(C++)とあなたの書くロジック(Python)が、APIを介してメモリ空間を共有して動作します。つまり、あなたはエディタの挙動を「外側から操作する」のではなく、「エディタの機能の一部として組み込む」ことができるのです。

これをマスターすれば、毎日のコーディングで「あと一歩、こう動いてくれたらいいのに」という小さなストレスを、わずか数行のコードで完全に消し去ることができます。

—

1. 開発の舞台を整える:専用ディレクトリの構造

Sublime Textのプラグインは、`Packages`ディレクトリ内の特定の構造を守るだけで認識されます。まずは以下の手順で環境を作ります。

1. Sublime Textを起動。
2. メニューバーの `Preferences` > `Browse Packages…` を選択。
3. 開いたフォルダの中に `MyOptimizer` というフォルダを作成します。

これだけです。Sublime Textは、このフォルダを監視し、中に配置された`.py`ファイルを自動的に読み込みます。コンパイルも再起動も不要。保存した瞬間、あなたのコードはエディタの一部になります。

—

2. Hello Worldを超えた「自動整形」のロジック

単にポップアップを出すだけのHello Worldは誰でも書けます。今回は、「選択したテキストを即座に大文字変換し、かつログに残す」という、実務で使える最小単位のプラグインを作成します。

`MyOptimizer/main.py` というファイルを作成し、以下のコードを記述してください。

import sublime
import sublime_plugin

TextCommandクラスを継承することで、エディタの編集機能に介入します
class UppercaseAndLogCommand(sublime_plugin.TextCommand):
def run(self, edit):
# viewは現在開いているファイルを指すオブジェクト
for region in self.view.sel():
if not region.empty():
# 選択範囲のテキストを取得
s = self.view.substr(region)
# 大文字変換して置換
self.view.replace(edit, region, s.upper())

# コンソールにログを出力(Ctrl+` で確認可能)
print(f”変換実行: {s} -> {s.upper()}”)

このコードの「本質」

  • `sublime_plugin.TextCommand`: エディタの編集イベントをフックするための基底クラスです。
  • `edit`オブジェクト: Sublime Textのundo/redoスタックを管理するための「編集トークン」です。これを経由しない変更は、エディタの履歴管理から漏れてしまいます。

—

3. 動作確認:コマンドを呼び出す

作成したプラグインを呼び出すには、コマンドパレット(`Ctrl+Shift+P`)を使います。しかし、今のままでは名前が長すぎます。これをキーボードショートカットに割り当てましょう。

`Preferences` > `Key Bindings` を開き、右側のユーザー設定ファイルに以下を追記します。

[
// Ctrl+Shift+U を押すと、先ほど作ったコマンドが実行される設定
{
“keys”: [“ctrl+shift+u”],
“command”: “uppercase_and_log”
}
]

※ クラス名が `UppercaseAndLogCommand` の場合、コマンド名は自動的にスネークケースの `uppercase_and_log` に変換されるのがSublime流の規約です。

—

4. 現場で「震える」ための次のステップ

ここから先は、あなたの発想次第で可能性は無限に広がります。

実践的なアイデアの種

1. スニペットの動的生成: 特定のプロジェクトフォルダを開いた時だけ、そのプロジェクト固有の定型文をメニューに追加する。
2. API連携: 選択した関数名をGoogleで検索したり、ChatGPT APIを叩いてリファクタリング案をサイドバーに表示したりする。
3. 自動バリデーション: ファイル保存時に、独自のLintルール(社内規約など)に違反していないかチェックし、エラーなら保存をブロックする。

最後に

Sublime Textのプラグイン開発は、「IDEに支配されるのではなく、IDEを支配する」というエンジニアとしての強力な武器になります。

最初は小さな修正からで構いません。あなたが毎日繰り返している「退屈な手作業」を、Pythonで自動化してみませんか?一度その快感を知れば、もう既製品のエディタ設定には戻れなくなるはずです。

もし分からないことがあれば、いつでもまた聞きに来てください。あなたの開発環境を最高のものに仕上げるお手伝いをしますよ。

タイトルとURLをコピーしました