最近乗り換えたvimプラグインやら

# ディレクトリツリーからファイル選択

`NERDTree`から`vimfiler`に乗り換えた。

両者はいずれもディレクトリツリーからファイルを開くという意味では一見良くてい似ています。
しかしそのコンセプトは別物で、自分には`vimfiler`のコンセプトが合致したので乗り換えました。

簡単にいえば`NERDTree`は常にディレクトリツリーを表示して使用するのに対し、
`vimfiler`はディレクトリツリーを必要に応じすべてのウィンドウで表示可能な点が異なります。

説明が下手すぎるので、詳細は`vimfiler`のヘルプにもリンクしてある以下を参照して下さい。
わかりやすい。
http://vimcasts.org/blog/2013/01/oil-and-vinegar-split-windows-and-project-drawer/

なお`NERDTree`的な使い方も必要な場合は`:VimFilerExplore`コマンドにて実現可能です。
状況によってはこちらも利用しています。

```vim:.vimrc
NeoBundle 'Shougo/vimfiler.vim'
nnoremap <leader>e :VimFilerExplore -split -winwidth=30 -find -no-quit<Cr>
```

## コマンド

### 移動

key  | action
:--:|-------
j    | 下へ
k    | 上へ
l | 子ツリーへ(exploreオプションで動作変わる)
h | 親ツリーへ(exploreオプションで動作変わる)
gg   | トップへ
L    | 別ドライブへ(Unite形式)
~    | ホームへ
\    | ルートへ
&    | プロジェクトルートへ
C-j  | 履歴へ(Unite形式)
BS   | 親ツリーへ
I    | パス直接指定移動

### 表示

key  | action
:--:|-------
.   | 非表示ファイルの表示切り替え
M   | フィルタリング(Unite形式)
t    | ツリー展開
T    | 再帰的ツリー展開
S   | 並びかえ
C−l | 再描画
C-g | フルパスを出力
g\<C-g> | 全画面トグル


### 検索
key  | action
:--:|-------
gr  | grep(Unite形式)
gf  | find(Unite形式)

### 実行

key  | action
:--:|-------
e   | 編集(`g:vimfiler_edit_action`で定義)
E   | eの分割バージョン
\<enter> | 実行(`g:vimfiler_execute_file_list`で定義)
H   | shell(vimshell)起動
x | 関連付けで開く
B | バイナリ編集([vinarise](https://github.com/Shougo/vinarise.vim)が必要)
a   | アクション選択
ge | 外部ファイラーで開く
!  | シェルコマンド実行
v  | プレビュー(`g:vimfiler_preview_action`で定義)

### 閉じる

key  | action
:--:|-------
-  | 現在のvimfiler画面を閉じる
q  | vimfilerを隠す
Q   | vimfiler終了

### ファイル操作

key  | action
:--:|-------
gs | safe mode 解除
c  | コピー
m  | 移動
d  | 削除
r  | リネーム(renamer.vimライク）
K  | ディレクトリ作成
N  | ファイル作成
Cc | クリップボードへコピー
Cm | クリップボードへ移動
Cp | クリップボードから貼付け
o | vimfilerの同期
O | 他方のvimfilerで開く

### マーク

key  | action
:--:|-------
\<space> | マーク
* | すべてマークのトグル
U | すべてクリア

# インデントをわかりやすく表示

`indent-guides`から`indentLine`に乗り換えました。

特に不満はなかったが、ある日突然[重くなり](https://github.com/nathanaelkane/vim-indent-guides/issues/75)そのまま乗り換えたら便利だったのでそのまま使用しています。
`g:indentLine_faster`を有効にするとさらに軽くなって良いです。

```vim:.vimrc
NeoBundle 'Yggdroot/indentLine'
let g:indentLine_faster = 1
nmap <silent><Leader>i :<C-u>IndentLinesToggle<CR>
```

こんな感じで表示されます。

![スクリーンショット 2014-09-11 21.04.32.png](https://qiita-image-store.s3.amazonaws.com/0/14471/bfd3218b-4d10-f2bc-9154-d27afb3bddee.png)



# テキストを整列

`alignta`から`easy-align`に乗り換えました。

```vim:.vimrc
NeoBundle 'junegunn/vim-easy-align'
```

以下は公式のデモですが、これを見て便利そうだったので使っています。

![公式のdemo](https://camo.githubusercontent.com/4a6a21b48588a603e839796418fbaece55006bb3/68747470733a2f2f7261772e6769746875622e636f6d2f6a756e6567756e6e2f692f6d61737465722f76696d2d656173792d616c69676e2e676966)

# カーソルの移動

もともと`easymotion`を使っていて、今でも使っています。

```vim:.vimrc
NeoBundle 'Lokaltog/vim-easymotion'
```

ただ他にもいろいろ試しましたが、正直カーソルスピードを上げるのが一番効果がありました。
Macなら変更は`Karabiner`(旧`KeyRemap4MacBook`）にて例えば以下のように設定可能です。
(Windowsでは`kbdacc`とか使用）

![スクリーンショット 2014-09-11 21.22.24.png](https://qiita-image-store.s3.amazonaws.com/0/14471/1eae050a-f194-246f-24e0-663895200a30.png)

あと地味に`smartword`も便利だったので入れました。

```vim:.vimrc
NeoBundle 'kana/vim-smartword'
nmap w   <Plug>(smartword-w)
nmap b   <Plug>(smartword-b)
nmap e   <Plug>(smartword-e)
```

# ウィンドウサイズの変更

`vim-submode`で以下のようにしていました。
これなら`<C-w>+<C-w>+<C-w>+<C-w><<C-w><`などが`<C-w>+++<<`でできて便利です。

```vim:.vimrc
NeoBundle 'kana/vim-submode'
for k in split('<>+-=n', '.\zs')
  call submode#enter_with('winsize', 'n', '', '<C-w>'.k, '<C-w>'.k)
  call submode#map('winsize', 'n', '', k, '<C-w>'.k)
endfor
```

でも今更`alt`キーにもマップできると知り試してみました。
モードを抜ける動作も不要なので、この場合に限りこちらの方法が楽でした。

```vim:.vimrc
" マックの場合に必要
set macmeta
" サイズ変更
nnoremap <M-+> <C-w>-
nnoremap <M--> <C-w>+
nnoremap <M->> <C-w>>
nnoremap <M-<> <C-w><
" alt + = でリセット
nnoremap <M-=> <C-w>=
" alt + a で最大化
nnoremap <M-a> <C-w>_<C-w><Bar>
" 移動
nnoremap <M-h> <C-w>h
nnoremap <M-j> <C-w>j
nnoremap <M-k> <C-w>k
nnoremap <M-l> <C-w>l
```

これにより先程の入力は`alt`+`;;;<<`で入力可能です。

他にウィンドウ移動なども割り当てて使っています。