今どきのVim使いに少しでも近づくために、GitとVundleを使ったVim環境を整えた。
そもそもVimのプラグイン管理や設定について知らなくて困った点(そこに作るファイル/フォルダには何の意味があるのか)も書いておく。
手順やコマンドの説明は、参考サイトさん参照。
動作確認済環境
Windows 7 Pro + KaoriYaVim74
Windows 10 Pro + KaoriYaVim81
参考
凡例
{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で管理しているローカルディレクトリ)
手順
- Vimを入手する
香り屋さんから取得して、{HOME}\vim\vim.exe になるように展開する。 - {HOME}\vim にpathを通す
コマンドプロンプトでvimを実行できるようにする。 - {DOTS}を作る(GitHubから持ってくる)
cd {DOTSにしたい場所の親フォルダ}
(例えば、{HOME}\Documents\GitHub\)
git clone https://github.com/morishima0524/dotfiles
- Vundleを取得する
mkdir {DOTS}\vimfiles\bundle
cd {DOTS}\vimfiles\bundle
git clone https://github.com/VundleVim/Vundle.vim.git
- {HOME}\.vim\シンボリックリンクを作る(管理者権限コマンドプロンプトで)
cd {HOME}
mklink /D .vim {DOTS}\vimfiles
({DOTS}\vimfilesは絶対パス推奨) - {DOTS}の_vimrcを読むようにする
mklink _vimrc {DOTS}\vimfiles\_vimrc
({DOTS}\vimfiles_vimrcは絶対パス推奨)
gVimを使うなら、_gvimrcもリンクを作る - vimを起動して「:PluginInstall」
- 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参照。
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のデフォルト設定をコピペで導入できるようにすること。
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のみをインストールしている場合
cygwinのgitだと、git clone
のclone先が/cygdrive/c/略/bundle/c:\Users\略 に入れようとしてしまう - 単体のgitをインストールする
-
where git
の結果で、cygwinではないgitが先頭に出てくればOK。 - GitBashを「GitBashからのみ使用する」設定でインストールしている場合
コマンドプロンプトでVimを起動した場合に、gitコマンドが使えないのでインストールに失敗してしまう。 -
インストールはGitBashで実行する
ちょっと不便だけど、めったにやらないし、よしとする案。 -
GitBashのgit.exeにパスを通す or 単体のgitをインストールする or GitBashをインストールしなおす
などなど、コマンドプロンプトからgit
を実行できるようにする案。
GitHubからSSHでcloneできない
環境を作ろうとしている場所(会社とか)のポリシーによっては、できないこともある。
あきらめて、HTTPSでクローンすればよい。