スニペットは「切れ端」や「破片」を意味する。
よく使うタグの組み合わせやまとまったコードを予め登録しておき、特定のキー入力+Tabキーで簡単に呼び出す機能。うまく使うとコピー&ペーストの手間を省ける。
公式のヘルプ(英語):Snippets — Sublime Text Help
作り方
メニューの「ツール」→「スニペット追加」から登録できる。
選択すると、以下のようなファイルが展開される。これを編集する。
保存する時は「○○.sublime-snippet」の形式で保存する。
保存先のフォルダは上記メニューから開いた場合、Packagesフォルダ内にあるUserフォルダになっている。
Packagesフォルダ内ならどこでも良いようなので、用途単位でまとめたい場合はUserフォルダ内にさらに別のフォルダを作り、そこに一括で保存してもよい。
なお、再編集する場合は、「スニペット追加」のコマンドからは開けないので、フォルダを辿って開く必要がある。
<snippet> <content><![CDATA[ Hello, ${1:this} is a ${2:snippet}. ]]></content> <!-- Optional: Set a tabTrigger to define how to trigger the snippet --> <!-- <tabTrigger>hello</tabTrigger> --> <!-- Optional: Set a scope to limit where the snippet will trigger --> <!-- <scope>source.python</scope> --> </snippet>
注意点
1つのスニペットにつき、1ファイルが必要。10個のスニペットを登録する場合は、10個のファイルを作る必要がある。1つのファイルに複数のスニペットを登録することは出来ない。
スニペットの内容
- snippet
- スニペットの設定全体を囲むタグ。
- content
- 展開後の内容を記入する箇所。
${n:変数名}(nは数字)で展開時に上書きする変数が設定できる。展開時には数字で指定した順番にタブキーで移動する。
同じ変数名を複数使った場合は、一箇所を記入するだけでその他の箇所に同じ内容が上書きされる。
展開後カーソルを置く位置には${0}を記入する。 - tabTrigger
- 展開前の短縮形となる任意の文字列。
- scope
- スニペットを有効にするモードを指定する。省略した場合はすべてのモードで有効になる。
例を挙げるとhtmlファイルで有効にしたい場合は、「text.html」、CSSファイルの場合は「source.css」、Rubyの場合は「source.ruby」と記入する。単なるテキストファイルの場合は、「text」でよい。
モードを複数指定する場合は、「text.html,source.css」のようにコンマで区切ればよい。 - description
- スニペットの説明を記入する。記入した説明は補完のポップアップに表示される。
サンプル
設定
div.sublime-snippet
<snippet> <content> <![CDATA[ <div id="${1:id名}"> <ul> <li class="${2:}">${3:}</li> <li class="${2:}">${4:}</li> <li class="${2:}">${5:}</li> <li class="${2:}">${6:}</li> </ul> </div> ]]> </content> <tabTrigger>divli</tabTrigger> <scope>text.html,text</scope> <description>メニューリスト</description> </snippet>
使用時
divliと打ち込み、tabキーを押すと、以下のコードが展開される。
最初はカーソルが「id名」の部分に当たっており、tabキーを押すごとに、${2:}の位置(4か所同時選択)、${3:}の位置……とカーソルが順次移動する。
<div id="id名"> <ul> <li class=""></li> <li class=""></li> <li class=""></li> <li class=""></li> </ul> </div>
応用
展開される文字列はなんでも良いので、よく使うEmmetの一連のセットを省略形で登録しておき、省略形+TabでEmmetのコードを呼び出し→必要な箇所を修正してCtrl+Eで展開ということもできる。
「スニペット追加」で立ち上がるタブの内容を変更する。
デフォルトでは上述のように一部がコメントアウトされているコードになっているが、毎回コメントアウトを消すのも面倒なので、この内容を自分好みにしたい場合の方法。
Packagesフォルダ→Default→new_templates.py ファイルを開く。
下の方に「class NewSnippetCommand」という箇所がある。そこに<snippet>タグで囲われている記述があるので、以下のように書き換える。scopeやdescriptionの内容は好みで。あまり設定しない場合は、最初のようにコメントアウトしておいてもいい。
コメント行にしろ、日本語が入るとメニューの「スニペット追加」が機能しないようなので、日本語は使えない。
template = """<snippet> <content><![CDATA[
]]></content> <tabTrigger></tabTrigger> <scope>text.html,source.css,text</scope> <description></description> </snippet> """