【一人 vimrc advent calendar 2017】vimrc で起動時にのみ実行するスクリプトを記述する【6日目】
一人 vimrc advent calendar 2017 6日目の記事になります。
vimrc
で環境変数などに追記する設定を記述する
さて、以前『vimrc で安全に autocmd を設定する』記事でも書いたのですが、vimrc
は再読込される可能性を考慮する必要があると書きました。
同様に、例えば次のように『環境変数に追記するような設定』を行う場合も注意する必要があります。
" $PATH にパスを追記する let $PATH = $PATH . ";" . "/path/to/hoge"
上記のように『任意の(環境)変数に対して値を追記する』というような場合、『vimrc
を(再)読込する度』に値が追記されてしまいます。
has('vim_starting')
を使用する
このような場合 has()
関数を利用します。
has()
は『Vim で任意の機能がサポートされているかどうかを確認する』ための関数ですが、has('vim_starting')
と呼び出すことで『Vim の初期化中(起動中)では真を返す』というような挙動になります。
これを利用することで以下のように『起動時にのみ処理を実行する』というようなことができます。
" has('vim_starting') は起動時にのみ真を返す if has('vim_starting') " 起動時にのみ処理が行われる let $PATH = $PATH . ";" . "/path/to/hoge" end
まとめ
has('vim_starting')
を利用することで起動時にのみ実行される処理を記述できるvimrc
は再読込される可能性を考慮して設定しよう(2回目)
autocmd
もそうですが、このような意図しない挙動はエラーなど出るわけではないので注意して行う必要がありますね。