Vim で環境に合わせて Visual Studio の環境変数を設定する

Vim から cl.exe を呼び出す場合、vcvarsall.bat に書かれている環境変数を定義しておく必要があります。
端末から Vim を起動させる場合は vcvarsall.bat を叩いてから Vim を起動させればいいんですが、直接 gvim を起動させる事が多いと思います。
と、いうことで vimrc に環境変数を書いておくのが一番手っ取り早いかなーと思い、インストールされている Visual Studio の環境に合わせて環境変数を設定するようなスクリプトを書いてみました。

[ソース]

let s:msvc_dirs = [
\   "C:/Program\ Files/Microsoft\ Visual\ Studio\ 11.0",
\   "C:/Program\ Files/Microsoft\ Visual\ Studio\ 10.0",
\   "C:/Program\ Files/Microsoft\ Visual\ Studio\ 9.0",
\   "C:/Program\ Files/Microsoft\ Visual\ Studio\ 8.0",
\]


function! s:set_msvc_path(msvc_path)
    if has_key(s:, "msvc_path") || !isdirectory(a:msvc_path)
        return
    endif

    let s:msvc_path = a:msvc_path
    let path = a:msvc_path

    let $VSINSTALLDIR=path
    let $VCINSTALLDIR=$VSINSTALLDIR."/VC"

    let $DevEnvDir=$VSINSTALLDIR."/Common7/IDE;"
    let $PATH=$VSINSTALLDIR."Common7/Tools;".$PATH
    let $PATH=$VCINSTALLDIR."/bin;".$PATH
    let $PATH=$DevEnvDir.";".$PATH

    let $INCLUDE=$VCINSTALLDIR."/include;".$INCLUDE
    let $LIB=$VCINSTALLDIR."/LIB;".$LIB
    let $LIBPATH=$VCINSTALLDIR."/LIB;".$LIBPATH
endfunction


function! s:setup_msvc_path()
    call s:set_msvc_path(get(filter(copy(s:msvc_dirs), "isdirectory(v:val)"), 0, ""))
endfunction
call s:setup_msvc_path()


存在するディレクトリをチェックして Visual Studio 2012 から優先的に設定します。
インストールしているディレクトリが違うのであれば s:msvc_dirs を変更すればいいかと。