これまでのVimの勉強内容まとめ

## Vimの最低限の操作

#### ファイルを開く
`$ vim path/to/file`
bashでTabを押すと補完が効く。
補完が効かないときは大抵タイプミスしている。

#### 上書き保存して終了
`Esc`を押してから`:wq`

#### 保存しないで終了
`Esc`を押してから`:q!`

#### Vimのチュートリアルで勉強
`$ vimtutor`

#### 画面移動
`Ctrl+F`/`Ctrl+B`でForward/Backに1画面分移動できる。


## 少しだけ応用編

### 文字の検索

`/searchword`で検索、`n`で次へ、`N`で前へ

### 文字の置換

`:%s/from/to/g`でfromに一致する文字をtoに全部置換。
色々オプションがあるらしいけどまだ全部覚えていないのと、エスケープが必要な文字が良くわかっていない。

### 行の挿入系
`O`でカーソル行に新しい行を挿入して編集開始、`o`だとカーソル行の1つ下に挿入して編集開始。

### 単語を消して編集開始
`ciw` 会社で教えてもらった神コマンド。

追記：
`ci"`は""で囲まれた中身を削除、`ci'`は''で囲まれた中身を削除など、
最後の文字を変えるといろいろ応用がきく。

### 行を削除
`dd`でカーソルのある行自体を削除。

### 行でカーソル位置より後ろを全部削除
`D`で同じ行のカーソル位置より後ろを全部削除。

### 行番号
`:set number`で行番号を表示する。
`:set nonumber`で行番号を非表示にする。

### ファイルを開く
`:e path/to/file`でファイルを開く。
bashよりも優秀な補完がきく。

### 数行のインデントやコメントアウトを一気に削除
Control(ctrl)キーを押しながらvを押すことで矩形選択モードになる。
そのまま`x`を押すと選択された範囲の文字が一気に消える。

### 数行に同じ文字を一気に挿入
Control(ctrl)キーを押しながらvを押すことで矩形選択モードになる。
そのまま`I`を押してから好きな文字を入力する。最期にEscで一気に挿入。

## ついに画面分割

### コントロールキーの表記
Vim界で`<C-w>`はControl(Ctrl)キーを押しながらwを押すことを示す。

### 画面を分割する
`<C-w>v` で画面を垂直分割、`<C-w>s` で画面を水平分割。

### 画面を移動する
`<C-w>h`, `<C-w>j`, `<C-w>k`, `<C-w>l` で分割した画面を移動できる。
分割先でファイルを開くといい感じに2つ以上のファイルを同時編集できる。

### タブなど
タブ機能も`:tab〜`などのコマンドでできるらしいがタイピングが面倒くさい。

## .vimrcを少し弄り出す

### カラースキームとの出会い
[molokai](https://github.com/tomasr/molokai)をダウンロードして `~/.vim/colors/molokai.vim` に配置する。
`vim ~/.vimrc` で.vimrcを開き（無い場合は新規作成）`colorscheme molokai`と記述する。

入れてみたら綺麗になって満足、いい感じ。

### スワップファイルを無効に
.vimrcに`set noswapfile`を足すとgitによく引っかかって邪魔なスワップファイルを無効に。

### 自動でインデントするように
.vimrcに`set autoindent`を足すと自動でインデントするように。

### タブの下げ幅をカスタマイズ
.vimrcに`set tabstop=2`でタブの下げ幅をスペース2個分の表示にする。

### タブ入力時にスペースを使うように
.vimrcに`set expandtab`でタブ入力時にスペースが自動で入力されるようになる。

### Ctrl+Vで貼付けても階段状にならないように
.vimrcに`set pastetoggle=<C-E>` で貼付け時に<C-E>にすると、通常のコピペで貼付けても階段状にならない！！！神！

### vimの設定をgithubに保存
細かい設定をいちいち書くのが面倒なので、
`~/.vim`や`~/.vimrc`をgithubに保存しておくとcloneするだけでよい。楽ちん。

## 改めてタブの導入

### 面倒なタブコマンドではなく新しいバインドで導入

```vim

" Tab pages  "{{{2
" Fallback  "{{{3

" the prefix key.
noremap <C-t>  <Nop>


" Basic  "{{{3

" Move new tabpage at the last.
nnoremap <silent> <C-t>n  :<C-u>tabnew \| :tabmove<CR>
nnoremap <silent> <C-t>c  :<C-u>tabclose<CR>
nnoremap <silent> <C-t>o  :<C-u>tabonly<CR>
nnoremap <silent> <C-t>i  :<C-u>tabs<CR>

nmap <C-t><C-n>  <C-t>n
nmap <C-t><C-c>  <C-t>c
nmap <C-t><C-o>  <C-t>o
nmap <C-t><C-i>  <C-t>i

nnoremap <silent> <C-t><Space>  :<C-u>TabpageTitle<CR>

nmap <silent> <C-t><C-@>  <C-t><Space>
nmap <silent> <C-t><C-Space>  <C-t><Space>


" Moving around tabpages.  "{{{3

nnoremap <silent> <C-t>k
\ :<C-u>execute 'tabnext' 1 + (tabpagenr() + v:count1 - 1) % tabpagenr('$')<CR>
nnoremap <silent> <C-t>j
\ :<C-u>execute 'tabprevious' v:count1 % tabpagenr('$')<CR>
nnoremap <silent> <C-t>J  :<C-u>tabfirst<CR>
nnoremap <silent> <C-t>K  :<C-u>tablast<CR>

nmap <C-t><C-j>  <C-t>k
nmap <C-t><C-k>  <C-t>j
nmap <C-t><C-t>  <C-t>k

nmap <C-t>h  <C-t>j
nmap <C-t>l  <C-t>k
nmap <C-t><C-h>  <C-t>j
nmap <C-t><C-l>  <C-t>k

```

[emonkak](https://github.com/emonkak/config)氏のをパクってきた。
`<C-t>`から色々タブの操作をできるようにしたらほんとうに快適になった！！

### Vimを起動したまま.vimrcを反映
`:source ~/.vimrc` で起動したまま.vimrcを反映する。
ただし変更後にクリアされていないキーバインド等は想定通りに反映されないことも。

## プラグインに手を出し始めた

### NeoBundleの導入
[Shougo/neobundle.vim](https://github.com/Shougo/neobundle.vim)のREADMEにならって導入。
`:NeoBundleInstall`はよくわからないけれど、とりあえずVimを再起動すればどうにかなるっぽい。

### Unite.vimの導入

[Shougo/unite.vim](https://github.com/Shougo/unite.vim)を導入。
`NeoBundle 'Shougo/unite.vim'`と書くだけでOKだった。
使い方がわからなくて放置・・・。

### ctrlpの導入

[kien/ctrp.vim](https://github.com/kien/ctrlp.vim)を導入。
使い方は[この辺](http://qiita.com/oahiroaki/items/d71337fb9d28303a54a8)で。
まだ使い始めたばかりだけれどかなり使いやすく気に入っている。

### VimShellの導入

[Shougo/vimshell.vim](https://github.com/Shougo/vimshell.vim)を導入。
タブ操作と組み合わせてつかうととても便利だでした。
Vimを閉じる必要が無くなった。

### agvimの導入

[ag(The Silver Searcher)で検索しpecoで更に絞り込みvimで該当行を開く](http://qiita.com/fmy/items/b92254d14049996f6ec3)
キーバインドはjkにしてみた。

## いまここ

## これから

fugitive.vimがオススメと聞いているので使ってみたい。
vim-filer.vimやUniteをちゃんと使えるようになると、VimShellでcpとかしなくても済みそう・・。