したいこと
~/.vimrc
はシンプルに保ちたい。- vimを起動する場所によって設定を変えたい。
- 読み込むプラグインも変えたい。
- vim版virtualenv的な。
例:
ディレクトリ構成
.
├── py/
│ ├── .vim.d/
│ │ ├── vimrc
│ │ └── jedi-vim/
│ ├── python-project-000/
│ └── python-project-001/
└── rs/
├── .vim.d/
│ ├── vimrc
│ ├── rust.vim/
│ └── vim-racer/
└── rust-project-000/
py
以下のディレクトリでvimを起動した場合はjedi-vimプラグインを読み込むなど、Pythonの開発に適したvim環境で起動する。rs
以下のディレクトリでvimを起動した場合も同様に、Rustの開発に適したvim環境になる。
やってみる
~/.vimrc
filetype off
filetype plugin indent off
function! AppendRuntimepath(path)letdir=fnamemodify(escape(a:path,' '),':p:h')let&rtp=dir.','.&rtp.','.dir.'/after'endfunctionfunction!s:load_project_vimrc(loc)let dirs=finddir('.vim.d', escape(a:loc,' ').';',-1)foriin reverse(dirs)letdir=fnamemodify(i,':p:h')let rc=findfile('vimrc',dir)if filereadable(rc)
source `=rc`
endifendforendfunctionif has('vim_starting')calls:load_project_vimrc(getcwd())endiffiletype plugin indent on
py/.vim.d/vimrc
if has('vim_starting')call AppendRuntimepath(expand('<sfile>:p:h').'/jedi-vim')endif
rs/.vim.d/vimrc
if has('vim_starting')call AppendRuntimepath(expand('<sfile>:p:h').'/rust.vim')call AppendRuntimepath(expand('<sfile>:p:h').'/vim-racer')endifletg:rustfmt_autosave=1letg:rustfmt_command="$HOME/.cargo/bin/rustfmt"sethiddenletg:racer_cmd="$HOME/.cargo/bin/racer"let $RUST_SRC_PATH="$HOME/src/rustc-1.13.0/src"
cpp/.vim.d/vimrc
if has('vim_starting')call AppendRuntimepath(expand('<sfile>:p:h').'/vim-clang')endifletg:clang_cpp_options='-std=c++11 -stdlib=libc++'letg:clang_format_style='Chromium'letg:clang_format_auto=1
参考にしたもの
最後に
Vim script初心者すぎてコードが怪しい。