【一人 vimrc advent calendar 2017】現在の filetype に対して簡単に設定を追記する【18日目】
一人 vimrc advent calendar 2017 18日目の記事になります。
filetype
に対する設定
さて、vimrc
で任意の filetype
に対して設定を行う場合、以下のように autocmd
を使用することが多いです。
" filetype=cpp に対する設定 autocmd Filetype cpp setlocal matchpairs+=<:>
上記のような設定でもいいんのですが vimrc
の量が増えてくると管理しづらくなったり、新しく設定を追記するのもちょっと手間になってきます。
そこで、次のようなスクリプトを用いて vimrc
ではなくて『Vim プラグインとして』扱うと管理しやすくなります。
Vim プラグインとして filetype
用のファイルを管理する
まず、保存するディレクトリを決めます。
" このパスに設定を保存するようにする let $VIMFILETYPE_PLUGIN = "~/.vim/filetype"
次にこのディレクトリが Vim から読み込まれるように 'runtimepath'
へと追記します。
set runtimepath+=$VIMFILETYPE_PLUGIN
このように 'runtimepath'
に追加することで filetype=hoge
を行った際に自動的に #VIMFILETYPE_PLUGIN/ftplugin/hoge.vim
などファイルが読み込まれるようになります。
最後に以下のような編集用のスクリプト用いて filetype
に対する設定ファイルを簡単に開きます。
command! EditFileType execute "split " . $VIMFILETYPE_PLUGIN . "/after/ftplugin/" .&filetype. ".vim" nnoremap <silent> <Space><CR> :<C-u>EditFileType
あとは :EditFileType
などでスクリプトファイルを開いてそこに設定を記述していけば、:set filetype=
を行った際にその設定が読み込まれるようになります。
キーマッピング(<Space><CR>
)や開き方(split
)などはお好みで変えてください。
また、注意点としては、
- 設定を記述しただけでは反映されない
- 再度
:set filetype={filetype}
を行うことで反映される
- 再度
- グローバル(
:set
)ではなくてローカル(:setlocal
)で設定を記述する
あたりですかね。
ちなみにランタイムのファイルよりも後に読み込まれるように $VIMFILETYPE_PLUGIN/ftplugin/
ではなくて $VIMFILETYPE_PLUGIN/after/ftplugin/
にファイルを保存しています。
こうすることで既存の設定を上書きすることが出来ます。
まとめ
filetype
ごとの設定はautocmd FileType
を使うのが簡単vimrc
で管理しづらくなってきたらプラグインとして管理するのも手
わたしは割と初期の頃からこの設定を使っているんですがかなり便利です。