ディレクトリツリーからファイル選択
NERDTreeからvimfilerに乗り換えた。
両者はいずれもディレクトリツリーからファイルを開くという意味では一見良くてい似ています。
しかしそのコンセプトは別物で、自分にはvimfilerのコンセプトが合致したので乗り換えました。
簡単にいえばNERDTreeは常にディレクトリツリーを表示して使用するのに対し、
vimfilerはディレクトリツリーを必要に応じすべてのウィンドウで表示可能な点が異なります。
説明が下手すぎるので、詳細はvimfilerのヘルプにもリンクしてある以下を参照して下さい。
わかりやすい。
http://vimcasts.org/blog/2013/01/oil-and-vinegar-split-windows-and-project-drawer/
なおNERDTree的な使い方も必要な場合は:VimFilerExploreコマンドにて実現可能です。
状況によってはこちらも利用しています。
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が必要) |
| 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に乗り換えました。
特に不満はなかったが、ある日突然重くなりそのまま乗り換えたら便利だったのでそのまま使用しています。
g:indentLine_fasterを有効にするとさらに軽くなって良いです。
NeoBundle 'Yggdroot/indentLine'
let g:indentLine_faster = 1
nmap <silent><Leader>i :<C-u>IndentLinesToggle<CR>
こんな感じで表示されます。
テキストを整列
aligntaからeasy-alignに乗り換えました。
NeoBundle 'junegunn/vim-easy-align'
以下は公式のデモですが、これを見て便利そうだったので使っています。
カーソルの移動
もともとeasymotionを使っていて、今でも使っています。
NeoBundle 'Lokaltog/vim-easymotion'
ただ他にもいろいろ試しましたが、正直カーソルスピードを上げるのが一番効果がありました。
Macなら変更はKarabiner(旧KeyRemap4MacBook)にて例えば以下のように設定可能です。
(Windowsではkbdaccとか使用)
あと地味にsmartwordも便利だったので入れました。
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>+++<<でできて便利です。
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キーにもマップできると知り試してみました。
モードを抜ける動作も不要なので、この場合に限りこちらの方法が楽でした。
" マックの場合に必要
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+;;;<<で入力可能です。
他にウィンドウ移動なども割り当てて使っています。

