読者です 読者をやめる 読者になる 読者になる

人生リアルタイムアタック

当面はPython学習帳

Dein.vimにしたので折角だしこのタイミングでvimrc構成を整える

NeoBundle.vimからDein.vim移行に伴い、Vimの設定ファイル群の整理も行ったのでその記録。

設定ファイル群の構成

ざっくり以下の構成に整えました。

dotfiles/
└── .vim/
     ├── colors/     // カラースキーム置き場(今回は説明しません)
     ├── ftplugin/   // filetypeごとの固有設定ファイル置き場
     ├── gvimrc
     ├── rc/
     │   └── *.vim   // 各種設定ファイル
     ├── template/   // template置き場
     └── vimrc       // メインのvimrc

vimrc, gvimrc の設置箇所について

:help vimrc によると、

個人の初期化ファイルの配置場所:
Unix $HOME/.vimrc、$HOME/.vim/vimrc

初期化ファイルは上記の順に検索され、最初に見つかったものだけが読み込まれる。

推奨: Vimの設定ファイルは全て $HOME/.vim/ ディレクトリ(MS-Windowsでは$HOME/vimfiles/)に置くこと。そうすれば設定ファイルを別のシステムにコピーするのが容易になる。

とあります。

今まで$HOME直下にVim設定ファイルとして、 .vimrc, .vim/, .gvimrc の3つをシンボリックリンクでつなげてましたが、$HOME直下は.vim/だけで済むようにしました。

ftplugin ディレクトリについて

ファイルタイプごとに固有の設定は

.vim/ftplugin/<filetype>.vim
.vim/ftplugin/<filetype>_<name>.vim
.vim/ftplugin/<filetype>/<name>.vim

の箇所に配置すると、各ファイルタイプに応じて読み込まれます。
pythonを例にすると、python.vim でも python_hoge.vim でも python/hoge.vim でも読み込まれます。

.vimrc にすべてのファイルタイプの設定を書くのでなく、
各ファイルタイプごとに設定ファイルを用意することでリーダブルにします。

rc ディレクトリについて

私のVim環境下では、 .vim/rc/以下の *.vim ファイルをすべて読み込むように設定しています。
こうすることで、例えば Dein用の設定ファイルは.vim/rc/dein.vimのように、pluginごとの設定は.vim/rc/<plugin_name>.vim に分割することが可能です。

設定方法は、大本のvimrcに以下のように記述するだけです。

set rtp+=$HOME/.vim/
runtime! rc/*.vim

Dein.vim 用の call dein#add(...) を記述しまくった設定ファイルもここに設置しています。

template ディレクトリについて

テンプレートファイル置き場です。
Vimでのテンプレートは以下の設定で実現可能です。

例: Pythonのテンプレートファイルを設置する場合

.vim/template/skeleton.py として、以下を記述したファイルを設置します。

# coding: utf-8

次に、 .vim/rc/skeleton.vim に以下を記述したファイルを設置します。
(.vim/ftplugin/python.vim 内に記述しても可能です。)

augroup template
  autocmd!
  autocmd BufNewFile *.py 0r $HOME/.vim/template/skeleton.py
augroup END

$ vim new.py とすると、自動で "# coding: utf-8" が挿入されます。

:help skeleton もご参照ください。

まとめ

上記のような構成にすることで、Vimの設定ファイルをすべて .vim/ 配下で完結しつつ、ファイルタイプや用途ごとに適切に分割することができました。

以前より見通しがよくなった為、管理もしやすいです。
もし今まで.vimrcひとつで管理してた人は、分割も試してみてはいかがでしょうか?

それでは良いVimライフを!!