Windows+Vim+Vundle環境構築

今どきのVim使いに少しでも近づくために、GitとVundleを使ったVim環境を整えた。
そもそもVimのプラグイン管理や設定について知らなくて困った点（そこに作るファイル/フォルダには何の意味があるのか）も書いておく。
手順やコマンドの説明は、参考サイトさん参照。

### 動作確認済環境
Windows 7 Pro + KaoriYaVim74
Windows 10 Pro + KaoriYaVim81

#### 参考
* [そろそろしっかりvimを使う。dotfilesのgithub管理とvundleの導入。](http://holypp.hatenablog.com/entry/20110515/1305443997)
* [gmarik/Vundle.vim - GitHub](https://github.com/gmarik/Vundle.vim)

#### 凡例
{HOGE} : ファイルパスの省略記法（この記事でのローカルルール）
%HOGE% : Windowsの環境変数
$HOGE : Vimの環境変数

#まとめ
### 環境変数
以降の説明で使う変数は、以下のような意味。
**windows**
`%USERPROFILE%` = C:\Users\\_username_
**vim**
`:echo $HOME` = C:\Users\\_username_
`:echo $VIM` = C:\Users\\_username_\vim
$VIMのパスに日本語が含まれているとヘルプファイルが開けない(:hコマンドが使えない）など問題が起きるので、もしユーザー名を日本語で作ってしまった場合は他のフォルダに作るか、フォルダ名を変えるかする必要がある。

{HOME}：c:\Users\\_username_\
{DOTS}：{HOME}\Documents\GitHub\dotfiles\（GitHubで管理しているローカルディレクトリ）

### 手順
1. Vimを入手する<br/>
 [香り屋さん](http://www.kaoriya.net/software/vim/)から取得して、{HOME}\vim\vim.exe になるように展開する。
1. {HOME}\vim にpathを通す
コマンドプロンプトでvimを実行できるようにする。
1. {DOTS}を作る（GitHubから持ってくる）<br/>
 `cd {DOTSにしたい場所の親フォルダ}`（例えば、{HOME}\Documents\GitHub\）<br/>
 `git clone https://github.com/morishima0524/dotfiles`
1. Vundleを取得する<br/>
 `mkdir {DOTS}\vimfiles\bundle`<br/>
 `cd {DOTS}\vimfiles\bundle`<br/>
 `git clone https://github.com/VundleVim/Vundle.vim.git`
1. {HOME}\\.vim\シンボリックリンクを作る(管理者権限コマンドプロンプトで)<br/>
 `cd {HOME}`<br/>
 `mklink /D .vim {DOTS}\vimfiles`（{DOTS}\vimfilesは絶対パス推奨）
1. {DOTS}の\_vimrcを読むようにする<br/>
 `mklink _vimrc {DOTS}\vimfiles\_vimrc`（{DOTS}\vimfiles\_vimrcは絶対パス推奨）<br/>
 gVimを使うなら、_gvimrcもリンクを作る
1. vimを起動して「:PluginInstall」
1. Done.

# 最終的なディレクトリ構成
試行錯誤した結果、以下のようになった
{HOME}：c:\Users\\_username_\
{DOTS}：{HOME}\Documents\GitHub\dotfiles\（GitHubで管理しているローカルディレクトリ）

* {HOME}\
    * .vim\（{DOTS}\vimfiles\へのシンボリックリンク）
    * _vimrc（{DOTS}\vimfiles\_vimrcへのシンボリックリンク）
    * vim\（KaoriYaさんからDLしたものを展開しただけ）
* {DOTS}\
    * .gitignore（VundleでインストールしたプラグインをGitHubに入れないための設定ファイル）
    * vimfiles\（共有管理したいファイル）
        * _vimrc（大事な大事な個人設定ファイル）
        * bundle\（プラグイン置き場。vundleが管理するので、Git管理対象外）
            * nerdtree\（vundleで自動取得）
            * vim-indent-guides\（vundleで自動取得）
            * Vundle.vim\（git clone で取得）

## \_vimrc
[Quick Start](https://github.com/VundleVim/Vundle.vim#quick-start)参照。

```lang:_vimrc
set nocompatible
filetype off

set rtp+=~/.vim/bundle/Vundle.vim " vundleのインストール先
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'

" Directory Tree View
" usage enter :NERDTree in ex mode
Plugin 'scrooloose/nerdtree'

" Indent Seeing
Plugin 'nathanaelkane/vim-indent-guides'

call vundle#end()
filetype plugin indent on

" この後は、好きな設定を入れる
" edit settings
set tabstop=4
set shiftwidth=4
set expandtab
set number
set clipboard=unnamed,autoselect

" indent guide options
colorscheme default
let g:indent_guides_enable_on_vim_startup=1
let g:indent_guides_start_level=2
let g:indent_guides_guide_size=1

" map
inoremap jj <ESC>
noremap <CR> o<ESC>
noremap <silent> <C-T> :NERDTreeToggle<CR>
```

# 困ったこと
## vimrc？\_vimrc？.vimrc？設定ファイルの名前がいろいろ
* vimrc:
    * Vimの共通設定を書くところ。（香り屋さん固有の起動時読込ファイル？）
* \_vimrc:
    * Vimの個人設定を書くところ。
 * 以下のいずれかの場所に置く。
        * $HOME/\_vimrc(vimを起動して`:echo $HOME`で確認できる）
        * $VIM/\_vimrc(vimを起動して`:echo $VIM`で確認できる）
        * \$HOMEで見つかれば、$VIMは読まない（以上、vimrcに書いてあった）
* .vimrc:
    * Vimの個人設定を書くところ。
    * Windows以外の環境ではこういう名前（なんだと思う）

## Vimは%HOME%\\.vim\をプラグイン配置先として見ているのか？
**No.**
デフォルトでは見ていないが、設定次第で見る。
Vimが$VIM\plugins\をプラグイン配置先と認識していたのは、vimrcにそういう（runtimepath(rtp)にパスを追加する）設定が書いてあるからで、同じように追加すれば見させることは可能（と思う）。
KaoriYa Vimのプラグイン参照という意味ではこのショートカットを作る意味はない。

## では、{HOME}\\.vim\の役割は？
* プラグインをダウンロードする場所を誘導し、Vundleのデフォルト設定をコピペで導入できるようにすること。<br/>
 Vundleはデフォルトで`{HOME}/.vim/bundle/` にプラグインをDLするので。

## ローカルにある（香り屋デフォルト）プラグインをVundleに読み込ませる方法がわからない
**そんな方法はない**
かどうかは結局わからないが、ローカルファイルとして見るような指定はないように思う。
ローカルGitリポジトリを作ればよさそうだけど、なら自分でGitに上げてしまえばいいような気がした。
結局、香り屋に同梱されているプラグインはVundle管理せず、そのまま香り屋に読み込んでもらうことにした。

## シンボリックリンクを作れない
**管理者権限つきコマンドプロンプトを使う**

## シンボリックリンクをうまく作れない
`mklink /D リンクファイル リンク先`
リンク先を相対パスにすると、作るリンクができた場所からの相対パスになる。
`c:\> mklink /D test\.vim test\vimfiles`
とすると、.vim は c:\test\test\vimfiles を指す。絶対パスで指定するか、リンクファイルができる場所でコマンドをたたくのがいい。

## Git BashではうまくVimが起動しない環境がある
**未解決**

## :PluginInstallに失敗する
* cygwin版のgitのみをインストールしている場合<br/>
cygwinのgitだと、`git clone` のclone先が/cygdrive/c/略/bundle/c:\Users\略 に入れようとしてしまう
 * **単体のgitをインストールする**
 * `where git`の結果で、cygwinではないgitが先頭に出てくればOK。
* GitBashを「GitBashからのみ使用する」設定でインストールしている場合<br/>
コマンドプロンプトでVimを起動した場合に、gitコマンドが使えないのでインストールに失敗してしまう。
 * **インストールはGitBashで実行する**<br/>
ちょっと不便だけど、めったにやらないし、よしとする案。
 * **GitBashのgit.exeにパスを通す** or **単体のgitをインストールする** or **GitBashをインストールしなおす**<br/>などなど、コマンドプロンプトから`git`を実行できるようにする案。

## GitHubからSSHでcloneできない
環境を作ろうとしている場所（会社とか）のポリシーによっては、できないこともある。
あきらめて、HTTPSでクローンすればよい。