1つのvimrcをWindows/Linux/Macで使えるようにしよう!

全国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を使う」
なんて設定もできてしまいます。

おわりに

上記3種の設定を行うことで、Vim起動時のOS違い、依存関係、バージョン違いのエラー表示を防ぐことができます。
せっかくマルチプラットフォームで使えるエディタを使っているんだし、OS毎にvimrcを用意するのではなく、1つのvimrcで完結したいですよね。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.