全国1億2千万人のVimファンのみなさま、こんにちは。
今回は1つのvimrcをOSやvimのバージョンが違う場合にも、
エラーが発生しないで起動できるようにする設定方法をご紹介します。
OS別の設定記載方法
if has("mac")
" mac用の設定
elseif has("unix")
" unix固有の設定
elseif has("win64")
" 64bit_windows固有の設定
elseif has("win32unix")
" Cygwin固有の設定
elseif has("win32")
" 32bit_windows固有の設定
endif
こちらは鉄板ですが、OS別設定の記載方法です。
vimrcでは、if has("OS名")
を使用することで、指定したOSのみに適応する設定を記載することができます。
環境別の設定記載方法
if ( has ('python') || has('python3') )
" python が必要な設定をここに書く
else
" python がないときの設定
endif
if has('lua')
" lua が必要な設定
else
" lua がないときの必要な設定
endif
こちらは、上記のOS別設定の応用版です。
if has("依存関係名")
を使用することで、
Vimインストール時に、有効化されているオプションの依存関係別に設定することが可能です。
現在自分がインストールされているVimの有効化されているオプションが知りたい場合は、
vim --version
で。
Vimバージョン別の設定記載方法
Vimのバージョンによっては、未実装の機能があったりします。
例えば、バージョン8.0以下のVimのvimrcにset breakindent
があった場合、
起動時にエラーが表示されます。
これでは、非常に使いづらいので、
「バージョン8.0のVimのみbreakindentを有効化する」という書き方にします。
if v:version >= 800|set breakindent|endif
上記の書き方で、実現することが可能です。
他にも、vimにはcryptmethod
というファイル暗号化機能があり、
既定値は一番古い暗号化方式であるzip
なんですが、
vimバージョン7.4からは、暗号化方式にblowfish2
が追加されています。
if v:version >= 704 | set cm=blowfish2 | elseif | set cm=zip | endif
上記をvimrcに記載することで、
「Vimのバージョンが7.4以上の場合は暗号化方式にblowfish2
を使い、7.4以下の場合は暗号化方式にzip
を使う」
なんて設定もできてしまいます。
外部コマンドが存在する時のみの設定記載方法
外部コマンド(例えば、'git'とか。)の存在有無によって設定する、しないを分岐させることも可能です。
if executable('git')
call dein#add("airblade/vim-gitgutter")
call dein#add("tpope/vim-fugitive")
endif
上記では、プラグイン管理プラグイン「dein」でgit関連のプラグインをインストールする時の記載方法です。
これにより、gitコマンドがインストールされていない場合は、vim-gitgutterとvim-fugitiveをインストールしない、という風に記載することが可能です。
(そもそもdeinを入れている時点でgitコマンドは使える状態になっていますが、、)
おわりに
上記3種の設定を行うことで、Vim起動時のOS違い、依存関係、バージョン違いのエラー表示を防ぐことができます。
せっかくマルチプラットフォームで使えるエディタを使っているんだし、OS毎にvimrcを用意するのではなく、1つのvimrcで完結したいですよね。