この記事は?
vim-sonictemplate の使い方の備忘録。
本文
インストール方法
自分の場合は dein.toml で管理しているので以下のように記述しています。
[[plugins]]
repo = 'mattn/vim-sonictemplate'
使い方
テンプレートの挿入
:Template {snippet_name} でスニペットを挿入できます。ファイルを新しく開いたとき (ファイルが空の時) は base- から始まるテンプレートから選択可能です。
すでにファイルに何か書き込まれているときには snip- から始まるスニペットを挿入可能です。インデントの中でスニペットを使いたいときにはインサートモードを維持したまま <c-y>t {snippet_name} と入力するとインデントの中で中でスニペット挿入ができます。
テンプレートの追加
テンプレートファイルの名称と置き場所
テンプレートは base- をつけて作成するとファイル新規作成時のテンプレートに、snip- をつけて作成すると作成済みファイルに挿入するスニペットになります。ファイルを置く場所は vim-sonictemplate/template/{language} 以下におけば OK です。{language} 部分は例えば go とか python とかです。なお、自分で適当に作ったフォルダの中に置いて、vim-sonictemplate にそこを参照させることもできます (後述)。
テンプレート作成時のオプション
代入系
-
{{_name_}}: ファイル名を自動挿入します -
{{_input_:variable_name:default}}: 挿入位置の値をインタラクティブに入力できます。variable_name:という入力フォームが出るのでそこに値を入れます。そのままエンターキーを叩くとdefaultに設定した値が挿入されます -
{{_expr_:hoge}}:hoge部分に vimscript を挿入できます。vimscript の戻り値が入力されます -
{{_if_:expr;foo;bar}}: vimscript で三項演算子を規定します。exprの評価がtrueならfoo、falseならbarが挿入されます
その他
-
{{_cursor_}}: スニペットを打ち込んだ後にカーソルが置かれる場所を指定できます -
{{_inline_}}: スニペットをワンライナーで挿入します -
{{_filter_:hoge}}: 通常アルファベット順にサジェストされるスニペットにおいてhogeが含まれるスニペットを上位にサジェストする
custom settings
テンプレートを置くディレクトリを指定したい場合
sonictemplate_vim_template_dir 変数を変更します。なお、ドキュメントを読む感じこの引数はリストでも渡すことができるので、複数のディレクトリに分散してテンプレートを置くこともできそうです。
[[plugins]]
repo = 'mattn/vim-sonictemplate'
hook_add = '''
let g:sonictemplate_vim_template_dir = '/root/.config/nvim/templates'
'''