Windows上でのvimの環境構築

いろいろと設定を変更していると、必要なプラグインを追加した時によくわからないエラーになったりする。
そのたびに、vimを入れ直したりするのは、非常に面倒なので、vimの設定について一度、ちゃんと整理してみる。

前提/構築環境

なお、以前にvimを使っていた人は、悪さしないように、以下のファイル等々を別の場所に移しておく。あとで、必要に応じて復旧する。

  • $VIM配下
  • $HOME\_vimrc
  • $HOME\_gvimrc
  • $HOME\vimfiles配下

インストール

  1. 香り屋さんのサイトから、vimをダウンロードして、適当なディレクトリに解凍する。
  2. まずは、この時点で、状況を確認する。
    • vimを起動して、:version コマンドを実行
:version
(省略)
      システム vimrc: "$VIM\vimrc"
        ユーザ vimrc: "$HOME\_vimrc"2ユーザ vimrc: "$HOME\vimfiles\vimrc"3ユーザ vimrc: "$VIM\_vimrc"
(省略)
     システム gvimrc: "$VIM\gvimrc"
       ユーザ gvimrc: "$HOME\_gvimrc"2ユーザ gvimrc: "$HOME\vimfiles\gvimrc"3ユーザ gvimrc: "$VIM\_gvimrc"
(省略)

なお、$VIMや$HOMEがどこになっているかは、以下のコマンドで確認できる。

:echo $VIM
:echo $HOME
:echo $VIMRUNTIME

vimの設定ファイルであるvimrcは、上記の順に読み込まれ、同じパラメータに別の設定をした場合、あとに読まれるファイルで上書かれることになる。

そして、香り屋版のvimの場合、最初に読み込まれるシステムvimrcが同梱されている。つまり、香り屋版を使った場合、利用者は何も設定しなくても、このシステムvimrcの設定はされることになる。さらに、香り屋版に同梱のシステムvimrcから、設定の前に、$VIMRUNTIME/vimrc_example.vimも読み込んでいる。

したがって、香り屋版のvimをそのまま使っている場合、知らないうちに、以下のvimrcの設定が有効になっている。

(システムvimrcから読み込み): "$VIMRUNTIME\vimrc_example.vim"
             システム vimrc: "$VIM\vimrc"
            システム gvimrc: "$VIM\gvimrc"

そのため、プラグインを導入した際に、どうしてもエラー等が発生する場合には、上記の設定もちゃんと確認する必要がある。


ちなみに、香り屋版に同梱のシステムvimrcでは、このファイルの設定をskipするためのオプションが用意されている。

  • $VIM/vimrc_local.vimが存在し、変数g:vimrc_local_finishに0以外の値が設定されていれば、香り屋版に同梱のシステムvimrcをskipする。
  • $HOME/.vimrc_first.vimが存在し、変数g:vimrc_first_finishに0以外の値が設定されていれば、香り屋版に同梱のシステムvimrcをskipする。
  • 上記のどちらかのファイルに、変数g:no_vimrc_exampleに0以外の値が設定されていれば、$VIMRUNTIME/vimrc_example.vimをskipする。

この辺りは、以下の議論で追加された?
https://github.com/vim-jp/issues/issues/331
非常に複雑になっており、わかりづらい。。。


上記を理解した上で、以下の様にvimrcを使い分けるのが良いと思われる。

  • システム vimrc: "$VIM\vimrc"
    • 環境(win,mac,unixなど)依存など、全ユーザで共通な設定を記載
  • ユーザ vimrc: "$HOME\_vimrc"
    • 各ユーザが独自にカスタマイズしたいものを記載
  • 第2ユーザ vimrc: "$HOME\vimfiles\vimrc"
    • こちらも、各ユーザが独自にカスタマイズしたいものを記載
    • 個人的には、$HOME直下をあまり汚したくないので、こちらに設定する方が好み。
    • また、vimfilesディレクトリを用途ごとに複数用意して、使い分けたりもできるかも。
  • 第3ユーザ vimrc: "$VIM\_vimrc"
    • 全ユーザに必ず強いる設定を記載

neobundleをインストール

なにはなくとも、neobundleをインストールする。
基本的にhttps://github.com/Shougo/neobundle.vimに記載しているとおりにやればよい。ただし、Windowsの場合、パスが少しことなる。

  1. bundleフォルダを作成
    • $HOME\vimfiles\bundleを作成する
  2. neobundleをcloneする
  3. vimrcを作成
    • $HOME\vimfiles\vimrcを作成

2. のコマンドは以下のとおり。

> git clone https://github.com/Shougo/neobundle.vim $HOME\vimfiles\bundle\neobundle.vim

3. は以下の内容を記載。

" Note: Skip initialization for vim-tiny or vim-small.
if !1 | finish | endif

if has('vim_starting')
  set nocompatible               " Be iMproved

  " Required:
  set runtimepath+=~/vimfiles/bundle/neobundle.vim/
endif

" Required:
call neobundle#begin(expand('~/vimfiles/bundle/'))

" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'

" My Bundles here:
" Refer to |:NeoBundle-examples|.
" Note: You don't set neobundle setting in .gvimrc!

call neobundle#end()

" Required:
filetype plugin indent on

" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck

あとは、適宜必要な設定を$HOME\vimfiles\vimrcに記載する。

githubで管理しているdotfilesを使う

github上でdotfilesを管理する人が多い。そうすることで、どの環境からでも同じ設定でvimを使うことができる。
Linuxでも使うことを考慮し、vimの設定ファイルは通例に習い.vimrc、.gvimrcとしておく。ただし、windowsでは、_vimrcやvimrcというファイル名のため、リンクを張って対応する。

  1. githubレポジトリに登録
    • 登録方法については、ここでは省略する。
  2. githubレポジトリをclone
    • ここでは、$GIT\dotfiles\.vimrc、$GIT\dotfiles\.gvimrcとする
  3. リンクを張る
C:\Windows\system32>mklink %HOMEPATH%"\vimfiles\vimrc" $GIT\dotfiles\.vimrc
C:\Windows\system32>mklink %HOMEPATH%"\vimfiles\gvimrc" $GIT\dotfiles\.gvimrc

これで、ひと通りの環境構築完了。さて、エラーなく動くかな。。。