WindowsでVundleを使うときにはまったこと
Vundleのインストールについてはhttps://github.com/gmarik/vundleのREADME.mdを見れば大体わかるので、そちらを参照してください。
以下、自分がWindows環境でVundleを使おうとしてはまったことをメモしておく。
curl云々のところ
以下のスクリプト?をC:\Program Files\Git\cmd\curl.cmdに作ってなかった。
説明はちゃんと読みましょう!
curl.cmd
@rem Do not use "echo off" to not affect any child calls. @setlocal @rem Get the abolute path to the parent directory, which is assumed to be the @rem Git installation root. @for /F "delims=" %%I in ("%~dp0..") do @set git_install_root=%%~fI @set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%PATH% @if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH% @if not exist "%HOME%" @set HOME=%USERPROFILE% @curl.exe %*
set shellslashをしていた
これを設定していると、「\」と「/」の関係でパスがうまくいかないのでインストールなどに失敗していた。
プラグインのインストール先が ~/.vim/bundle 以下になっていた
これでインストールできるようになったかと思えば、インストールされるプラグインの場所が、~/.vim/bundle 以下になっていた。
で、いろいろ調べていくと、.vimrc で呼んでいるVundleの関数 vundle#rc() に解決の糸口があった。この関数は以下のようになっている。
vundle.vim
func! vundle#rc(...) abort let g:bundle_dir = len(a:000) > 0 ? expand(a:1) : expand('$HOME/.vim/bundle') call vundle#config#init() endf
let g:bundle_dir〜のところでインストールするプラグインのディレクトリを定義している。
ここで何をしているかというと、(見ればわかるか…)
もし、a:000(可変長引数)の長さが0より大きいとき、a:1(可変長引数の1個目)の絶対パスを展開しそれをインストール先のディレクトリに、そうでないとき$HOME/.vim/buncle以下をインストール先にするというものである。Windowsではプラグインなどはvimfiles以下に置かなければならず*1、vundle#rc()関数を引数なしで呼ぶと$HOME/.vim/bundleがインストールディレクトリなってしまう。
解決策
.vimrcに
call vundle#rc('~/vimfiles/bundle')
と書く。
でも、これではLinuxなど他の環境と.vimrcを共有している場合だめなので、
if has('win32') || has('win64') let $DOTVIM = expand('~/vimfiles') else let $DOTVIM = expand('~/.vim') endif
としておいて
call vundle#rc('$DOTVIM/bundle')
とかにしておくといいかも。
これで自分の環境ではうまくVundleを使えるようになりました。