LoginSignup
53
75

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-13

全国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で完結したいですよね。

53
75
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
75