LoginSignup
25
23

More than 5 years have passed since last update.

sonictemplate-vimで自分専用テンプレート

Posted at

sonictemplate-vimとは

mattnさんが作られた、テンプレートを管理するvimプラグイン。mattn/sonictemplate-vim
ノーマルモードで:Templateと書いた後にタブを押すことで、テンプレートの候補が表示され、とても簡単で激速。
(自分の環境では:Temでタブを押すと最初にTemplateが出る。一度スペースを打ち、場合によってはテンプレート名の頭文字をいれ、タブを押して選ぶだけ)
mattnさんご本人の解説もあるので、もっと詳しく知りたい方は参考にされるといいと思います。

自分専用テンプレート

自分が使うテンプレートも呼び出せるようにして楽したい。
sonictemplateそのものに自分のテンプレートを突っ込むと色々管理とか問題起きそうなので、次の方法を取ります。

  • テンプレート用のディレクトリを用意する
  • init.vimもしくは.vimrcで指定する
  • テンプレートを書く

ディレクトリ

テンプレート用ディレクトリは邪魔にならず、編集もしやすいところに作るのがいいでしょう。githubなどに公開したりすることも想定して決めるのもいいと思います。自分は~/git以下にgithubなどから拾ってきたものを入れていることが多いので、~/git/templateを使うことにします。

init.vimもしくは.vimrc

テンプレート用ディレクトリをvimに教えてあげないといけないので、.vimrc、neovimならinit.vim

init.vim
let g:sonictemplate_vim_template_dir = [
      \ '~/git/template'
      \]

のように、g:sonictemplate_vim_template_dirを指定します。sonictemplateのデフォルトのテンプレートのディレクトリは、指定しなくてもそのまま使えるので安心してください。

テンプレート本体

テンプレートになるファイルは、テンプレートディレクトリ/言語名/ファイル名のような配置をします。ファイル名には命名規則があります。[種類]-[テンプレート名].[拡張子]のようにします。種類はbase・file・snipの3種類で、baseは何も書いていない時に呼び出され、fileはbuffer名とテンプレート名が一致し、まだ何も書いていないときに呼び出されます。すでに何かを書いているとsnipが呼ばれます。

例えば、gulpfile.jsのテンプレートを用意するなら、自分の場合だと、~/git/template/javascript/file-gulpfile.jsを用意する事になります。

テンプレートファイルでは、変数などが使えます。
{{_name_}}だとファイル名。{{_cursor_}}でテンプレートを出した後のカーソルの位置。少し凝ったもので、{{_input_:var}}とすると、テンプレートを呼び出すときに、varの部分を何にするのか聞かれ、それが入ります。詳細は:help sonictemplate-vim-writetemplateに書かれています。

終わりに

sonictemplateの使い方が分かったので、色々とテンプレートを作って楽したいと思います。一応、n-kats/templateに公開場所だけ作ったので、やる気が続けばここにテンプレートが増えていくはず。

25
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
23