Sublime Text 2で自分用のスニペットを作る方法

Sublime Text 2では、変数の埋め込みができる強力なスニペット機能が使えます。スニペットは、デフォルトの状態でもかなり便利に使えますが、一番のポイントは自分用のスニペットを簡単に作れるところだと思います。しかし、スニペットの作り方について日本語の情報が見当たらない。なので、公式のヘルプなどを参考に自分でまとめてみました。

スニペットの内容

スニペットの実体は、xml形式で記入したテキストファイルです。定められた形式でテキストファイルを作成し、所定の場所に保存することでそのスニペットを使えるようになります。 Untitled Making2LearningRuby Sublime snippet スニペットファイルの内容は、5つの要素で構成されます。

  1. snippet
  2. content
  3. tabTrigger
  4. scope
  5. description

snippet

  • スニペットの設定全体をsnippetタグで囲みます。

全体をsnippetタグで囲んでその中にスニペットの設定を書きます。snippetタグがあるということは、1つのファイルの中に複数のsnippetを記述できるのかと思ったのですが、できないっぽいです。1スニペット1ファイルで作ります。

content

    • 展開後の内容を記入します。
    • XMLの書式と混じらないようにCDATAで囲む必要があります。
    • ${n:変数名}(nは数字)で展開時に上書きする変数が設定できます。展開時には数字で指定した順番にタブキーで移動します。
    • 同じ変数名を複数使った場合は、一箇所を記入するだけでその他の箇所に同じ内容が上書きされます。
    • 展開後カーソルを置く位置に${0}を記入します。

contentには展開した結果を記入します。上記の変数やカーソル位置の他にクリップボードの内容を埋め込むなどいろんな機能が使えます。詳細は公式のヘルプを見てください。

tabTrigger

  • 展開前の短縮形を記入します。

tabTriggerには展開前の短縮形を記入します。僕は「class..」などキーワードの後ろに「..」をつける形で短縮形の名前を統一しています。

scope

  • スニペットを有効にするモードを指定します。

Ruby編集時のみ有効にする場合はscopeに「source.ruby」と記入します。省略した場合はすべてのモードで有効になるようです。

description

  • スニペットの説明を記入します。

記入した説明は補完のポップアップに表示されます。

完成イメージ

クラス宣言のスニペットを作ってみました。こんな感じ。 Class sublime snippet Making2LearningRuby Sublime snippet

スニペットファイルの保存

  • ~保存する場所は「~/Library/Application Support/Sublime Text 2/Packages」配下
  • 拡張子を「.sublime-snippet」にします。

作成したスニペットは、packageフォルダの配下に適当なフォルダを作り、その中に保存します。packageフォルダ配下の.sublime-snippetファイルを自動的に認識してくれるようです。

スニペットの動作確認

クラス宣言のスニペットを実際に動かしてみます。Rubyの編集モードで「class」とタイプすると、先ほど作成したスニペットが補完候補にでてきます!この状態でTabキーを押すと… Skitched 20120325 155107 スニペットが展開されました。そして、変数に指定していたclass nameの位置にカーソルが合っているので、クラスの名称を記入します。そしてさらにTabキーを押すと… Ex1001 rb Making2LearningRuby Sublime snippet ${0}の位置にカーソルが移動します。すばらしい。 Ex1001 rb Making2LearningRuby Sublime snippet 2

スニペットをGithubに登録しました

作成したスニペットをGithubで管理するようにしました。主にRuby関連のスニペットを登録しています。

参考URL

今回参考にしたページはこちら。公式のヘルプです。