これまでスニペットプラグイン
SirVer/ultisnipsを使っていたのが、私はさすがにIDEの代わりにVimで全てまかなえる程、強者Vimmerでないので多機能すぎる。かつ、Python
依存プラグインは極力使いたくない1ので、別のプラグインを導入することにした。
調べると hrsh7th/vim-vsnipを、使ってみることにした。
導入することにした理由は以下による。
- README.mdが分かりやすかった
- コードスニペットファイル形式が
json
形式なので、学習コストが低い。 Python
非依存- 現在もメンテナンスされてるプラグインである
以下、自分で作成したコードスニペットファイルを晒す。
hugo.json
{
"Add": {
"prefix": ["add"],
"body": [
"---",
"**追記 ${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}** ",
"**追記ここまで**",
"",
"---"
],
"description": "追記"
},
"LastMod": {
"prefix": ["last"],
"body": [
"lastmod:${VIM:strftime(\"%Y-%m-%dT%H:%M:%S+09:00\")}"
],
"description": "更新日"
},
"Link": {
"prefix": ["link"],
"body": [
"[$TM_SELECTED_TEXT][]",
"",
"[$TM_SELECTED_TEXT]: url"
],
"description": "Link for selected text"
}
}
嬉しかったのは、現在年月日時刻、クリップボードなどがスニペット組込み変数として準備されていること。
しかも、${VIM:strftime(\"%Y-%m-%dT%H:%M:%S+09:00\")}
といった形でvim
関数を呼んだり、${VIM:system('python -c \"import uuid, sys;sys.stdout.write(str(uuid.uuid4()))\"')}
とpython
を利用することも可能ということだ。いやぁ、十分な程に多機能だわ。
" Select or cut text to use as $TM_SELECTED_TEXT in the next snippet.
また、クリップボード${CLIPBOARD}
とは別に、$TM_SELECTED_TEXT
としてカット・ペイストするためのテキストを保存しておくができる。他にも現在編集中のディレクトリ、ファイル名、行数などといったものも組込み変数として使える。
let g:vsnip_snippet_dir = expand('~/.vim/vsnip')
としてコードスニペットファイルの格納ディレクトリの指定も勿論、可能。
let g:vsnip_filetypes.markdown = ['hugo']
といった形で複数のコードスニペットファイルを利用することも出来る。
Support many LSP-client & completion-engine by vim-vsnip-integ'
多くのLSP-client、補完エンジンをサポートしているらしいが、自分は使わないので"Plug 'hrsh7th/vim-vsnip-integ'
として無効化したが、それでもちゃんと動いた。
VSCode拡張機能 golang/vscode-goのスニペットを読み込むこともできるようだ。
実際の使ってみての云々よりも README.md やドキュメントが分かりやすいのがありがたい。末永く使っていきたい。
-
他に
Python
依存のプラグインとして simplenote-vim/simplenote.vimも使っている。 ↩︎