vim でスニペットを使うために vim-vsnip を使いはじめました。
vim-vsnip はファイル形式ごとに JSON でスニペットを定義します。
ex: typescript.json
{ "ReactFC": { "prefix": "fc", "body": [ "import React from 'react';\n", "const $1: React.FC = () => {", " return (", " );", "};\n", "export default $1;" ], "description": "React関数コンポーネントの雛形" } }
このようなファイルを g:vsnip_snippet_dir
に設定したディレクトリに置くと、スニペットとして展開できるようになります。
let g:vsnip_snippet_dir = expand($HOME . '/dotfiles/vsnip')
自分はこのファイルを dotfiles として公開しています。
しかし、そうすると公開できるような内容しかスニペットに登録できず、公開できないコード、例えば仕事でよく使うコードなどを登録できません。
それは不便なので、スニペットの JSON ファイルを参照するディレクトリを複数登録したくなります。
そんなときはg:vsnip_snippet_dirs
に配列で複数のディレクトリを渡すことで解決できます。
let g:vsnip_snippet_dirs = [expand($HOME . '/dotfiles/vsnip'), expand($HOME . '/dotfiles/vsnip-local')]
こうしたうえで、 vsnip-local/
を .gitignore
に登録しておき、 vsnip-local/
に仕事等で使う公開したくないスニペットを保存します。
(自分は gitignore する前に vsnip-local/.gitkeep
を Git 管理下に置いておいて、その後 gitignore して git clone しても vsnip-local/
が存在するようにしています)