読者です 読者をやめる 読者になる 読者になる

NeoSnippetのsnippetファイルの設定

vim

Neosnippetでsnippetファイルを自分で編集するときの設定項目のメモ。
formatは次のようになる。

snippet [name]
abbr [abbreviation]
alias [aliases]
regexp [pattern]
options [options]
 if ${1:conditions}
  ${2}
 endif

・snippet [name] (必須)
[name]にsnippetを展開するためのKeywordを書く。[name]に書かれた文字に対して、snippetの展開を実行する。
NeoSnippetならCtrl+kで展開する。
・abbr [abbreviation]
補完のPopupに表示される説明文
・alias [aliases]
[name]の別名を複数つけられる。
regexp [pattern]
[pattern]にマッチしたときのみ、[name]を展開する。[pattern]には正規表現を記述する。
例えば、行の(空白を除いた)先頭の[name]のみを展開する場合は

regexp '^\s*'

と書く。
・options [options]
幾つかの便利なオプションが提供されている。[options]が取りうる値としては、
 ・word
単語の区切りで[name]を見つける。options wordなしだと

hoge1+hoge2

上記でhoge2のsnippetが登録されていても展開されない。(hoge1+hoge2で[name]だとみなされる)
1単語は英数字とアンダーバーのつながりで判断されるので、上の場合だと+で別の単語と認識されることになる。
 ・head
行頭に書かれた[name]にのみにsnippetを適用する。ただし、空白などは除く。
 ・indent
snippet展開後の文字にindentを適用する。
・snippetの中身(必須)

if ${1:condition1}
 ${2:#:statement}
endif
if $1 AND ${3:condition2}
 ${4:TARGET}
endif
${5}

${}で囲まれた部分はplace holderと呼ばれるもので、snippet展開後Ctrl+kでその場所に移動できる。
place holderの種類としては、
 ・${number:text}
numberは飛ぶ順番、textはその場所にデフォルトで表示される文字列。変更が必要な場合はtextを上書きすることになる。
 ・${number:#:text}
'#'が付いていないものとの違いは、textを変更せずにCtrl+kで次のplace holderにジャンプした際にtextが消されるという点。
 ・${number:TARGET}
visualモードで選択中のテキストをここに挿入できる。この機能を使うためには、

(neosnippet_expand_target)

でsnippetを展開するようkey mappingしないとだめ。
 ・${number}
ただのジャンプ先として便利。例えばifやforの中から抜けるためのplace holderとして使う。
 ・$number
ジャンプ先ではないが、同じ番号のplace holderで入力された文字がここにも入力される。for文とかで次のように使われる。

for (${1:i}; $1<${2:end}; $1++) {
 ${3:#:loop}
}
${4}

 ・${0}
最後にジャンプする場所。(number1から順に飛んで最後に0に飛ぶ)