プロジェクトごと(特定ディレクトリ以下ごと)に .vimrc を切り替えて使う方法
複数のプロジェクトに参加している場合に、プロジェクトごとに vim の設定(.vimrc など)を自動で切り替える方法を direnv と vim 用の環境変数 VIMINIT で実現できたのでメモしておく
前提
- 通常とは異なる vim 設定を読み込みたいプロジェクトのファイルは '~/workspace/project_aaa/' 以下に存在すると仮定する
- 通常とは異なる vim 設定の設定ファイル配置場所は '~/workspace/project_aaa/__vimrc' と仮定する
設定手順
- vim 関連の設定ファイルをコピー
$ mkdir ~/workspace/project_aaa/__vimrc/ $ cp -p ~/.vimrc ~/workspace/project_aaa/__vimrc/ $ cp -rp ~/.vim/ ~/workspace/project_aaa/__vimrc/
- vim の runtimepath を ~/workspace/project_aaa/__vimrc/.vimrc へ設定(先頭に追加)
" vim default runtimepath set runtimepath=~/workspace/project_aaa/__vimrc/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim82,/usr/share/vim/vimfiles/after,~/workspace/project_aaa/__vimrc/.vim/after
既存の runtimepath が分からなければ、vim 内で「:echo &rtp」によって現在の runtimepath を確認可能なので、参考にしつつ必要な箇所を __vimrc のディレクトリへ変更する
- direnv のインストール
以下手順に従ってインストール
https://direnv.net/docs/installation.html
- direnv の初期設定
以下手順に従って設定
https://direnv.net/docs/hook.html
~/workspace/project_aaa/.envrc に以下内容のファイルを作成
export VIMINIT='source $MYVIMRC' export MYVIMRC='${HOME}/workspace/project_aaa/__vimrc/.vimrc'
- 以下コマンドでこのディレクトリにおける direnv を有効化する
$ cd ~/workspace/project_aaa/ $ direnv allow .
以上の設定で、'~/workspace/project_aaa/' 以下に移動した場合に自動で '~/workspace/project_aaa/__vimrc/.vimrc' を .vimrc として読み込むようになる
$ cd ~/workspace/project_aaa/path/to/somedir
上記のように cd すると、下記のように設定が有効になる
direnv: loading ~/workspace/project_aaa/.envrc direnv: export +MYVIMRC +VIMINIT
これで '~/workspace/project_aaa/__vimrc/.vimrc' を編集すれば、'~/workspace/project_aaa/' 以下でのみ設定が有効になる
この設定の欠点
別の良い方法があれば知りたい
追記
localrc.vim というのを教えてもらった
良さそう