vimをちまちま使いはじめて3ヶ月。ちょっと整理してみるよ

今年からjavaでお仕事をすることがなくなり、IDE(eclipse)からvimに乗り換えました。
ここんところ、vimrcの設定値やpluginの管理などが煩雑になってきたので自分ルールを決めて
快適なvimライフを送りたいと思います。

1.今回の作業の目的

  • 自宅, 会社、PC移行時など同じ環境を作りたい、同期させたい
  • Plugin管理の煩雑さを解消
  • 設定値の整理(ファイル細分化とか)
  • 会社でvimを広める際に僕の環境を簡単にコピーさせる

ヒントになったやりとりがコレ↓

@tazyamah ありがとう!

2.環境というか必要なもの(Windows)

 インストールは「msysGitがUTF8日本語ファイル名に対応」を見てね

3.オールインワンパッケージの解凍

 vim73-aio.zipをCとかDドライブ直下に解凍する
 pluginを足す際は$VIMRUNTIME/pluginとかに配置するものなのだけど、
 この方法だとplugin等の管理が大変になるのでVIMランタイムは解凍後は一切触らないようにします。
 また、アップデートの際は新しいパッケージを解凍してそのまま上書きしてやれば大丈夫です。

4._vimrc,_gvimrc

オールインワンパッケージを展開するとsample_vimrc, sample_gvimrcというファイルがあります。
これをプロファイルディレクトリへ移動してリネームします。(Windows7の場合はC:\User\
_sample_vimrc → _vimrc
_sample_gvimrc → _gvimrc
_(アンダースコア)つきvimrcはUnixでいうところの.vimrcです。Windowsの場合は_(アンダースコア)つきのvimrcがユーザ固有のvim設定となります。
設定値に関してまだそこまで詳しくはないので基本はsampleをそのまま使っていきます。

5.日本語入力固定モード

 ものすごく煩わしい日本語入力時の対応。僕の場合、IMEをONにしておいて、IMEの切り替えをするようにしています。
 (ESCとIMEをよくミスタッチしてしまうので)
im_control.vimをダウンロードして
ユーザープロファイルディレクトリの.vim/pluginにおきます。(VIMRUNTIME上には置かない)
_gvimrcに

source ~/.vim/_gvimrc_im

で、.vim以下に_gvimrc_imを作って

"----------------------------------------
" 日本語入力固定モード
"----------------------------------------
source ~/.vim/plugin/im_control.vim
" 「日本語入力固定モード」の動作モード
let IM_CtrlMode = 4
" 「日本語入力固定モード」切替キー
inoremap   =IMState('FixMode')
" 「日本語入力固定モード」のバッファローカルモード
let b:IM_CtrlBufLocal = 1

でOK。(im_control.vimはconsoleでは使えないのであくまでもgvim用のファイルに書きます)
参考元はこちら

6.plugin管理

最初はvundleで管理しようと思ったんだけど、
@tazyamah「時代はNeoBundleですよ」
ということらしいので、plugin管理にはneobundleを使うよ!
install、使用方法はこちら
_vimrcの整理がてら僕の環境は以下のようになりました。
まずはgitでneobundle.vimをclone

$ mkdir -p ~/.vim/bundle
$ git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

その後、_vimrcに

source ~/.vim/_vimrc_neobundle

で、~/.vim/_vimrc_neobundleに

set nocompatible
filetype off

if has('vim_starting')
  set runtimepath+=~/.vim/bundle/neobundle.vim

  call neobundle#rc(expand('~/.vim/bundle'))
endif

" このへんは必須です!
" let NeoBundle manage NeoBundle
" required! 
"NeoBundle 'Shougo/neobundle.vim'
" recommended to install
NeoBundle 'Shougo/vimproc'
" after install, turn shell ~/.vim/bundle/vimproc, (n,g)make -f your_machines_makefile
NeoBundle 'Shougo/vimshell'
NeoBundle 'Shougo/unite.vim'

" ここから自分で使うplugin
" とりあえずいつもいれるzen-codingを
NeoBundle 'git://github.com/mattn/zencoding-vim.git'

filetype plugin on
filetype indent on

したらばvimを起動してコマンドモードで

:NeoBundleInstall

その後、vimを起動しなおしーの挿入モードで

html:4s

を入力して

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title></title>
</head>
<body>
	
</body>
</html>

出た!!!
やばい。bundle気持ちよすぎ

7.整理

ここまでの構成をまとめると、ユーザプロファイルディレクトリ以下の状態はこうなった
https://github.com/ya-sasaki/windows-vim

プロファイルディレクトリ
├─.vim " ユーザランタイムディレクトリ
│ ├─bundle " bundle管理フォルダ
│ ├─plugin " bundle管理外のplugin
│ | └im_control.vim " 日本語固定入力用
│ ├_gvimrc_basic " gvim基本
│ ├_gvimrc_im " IM設定
│ ├_vimrc_basic " gvim,vim基本
│ └_vimrc_neobundle " neobundle設定
├_gvimrc " gvim用ユーザ設定
└_vimrc " gvim,vim用共通ユーザ設定
  • pluginは基本bundleで管理
  • それ以外のものは基本.vim下にフォルダ掘ったりしながらsource ~/.vim/hoge_dir/hoge_pluginで管理していく
  • _vimrc,_gvimrcにはごちゃごちゃ書かない
  • 必要に応じて設定値は.vim下にカテゴライズしながら書いていく

8.環境構築 from git

ここまで作った環境は一旦ご破算して、オールインワンパッケージが既にある前提で環境構築してみる。
一旦任意のディレクトリにgit://github.com/ya-sasaki/windows-vim.gitをcloneする

$ mkdir work
$ cd work
$ git clone git://github.com/ya-sasaki/windows-vim.git

clone後は、windows-vim下の.vimフォルダ、_vimrc、_gvimrcをユーザプロファイルディレクトリへコピペ
neobunleがまだ入っていないのでcloneする

$ mkdir -p ~/.vim/bundle
$ git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

終わったらvimを起動して:NeoBundleInstall
わぁーい簡単簡単