正規表現で絞込みが出来るという謳い文句にひかれてCtrlP (ctrlp.vim)という開いているバッファやカレント・ディレクトリのファイル、最近開いたファイル(MRU)をサクっと開けるFuzzyFinder系のプラグインを入れてみました。同系統のものとしてUniteを使っていたのですが、主に使うのはファイル・ブラウザとMRUだったのでこれでも良さそうな気もしたので。ちょっと使った感じではなかなか好感触で、しばらくメインで使ってみる気になりました。
一覧メニューはハイライトされたりするわけではないのでそっけない感じです。絞り込みを開始するとマッチした部分がハイライトされます。下から上に一覧が出るのはコマンド・ライン・ウィンドウから近くて良いですね。<C-t>
でタブで開けたり、選択したファイルを開く時にExコマンドを実行できたり、複数のファイルをマークして行って一気に開くことが出来たり、ファイル・ブラウザとして必要そうな機能は大体揃っているような気がします。
謳い文句の正規表現はまぁアレですね。Vimの正規表現が覚えられないという致命的な弱点を持つ僕には無意味でした……。普通に絞込みでも速くて便利だったのでよしとします。
カレント・ディレクトリのファイルの参照はUniteのfile_recと同じ再帰探索を普通にやってるみたいなのでちょっと重いです。ここらへんはUniteの方が良く出来てるなーと思いますね。
MRUはデフォルトの150ならそれほどでもないですが、500程にすると開くのが気持ち遅いかなという感じです。MRUの記録でつっかかるとかそういう感じはないです。
キーマップを始め細かく設定できるようになっていますが、いまいちデフォルトがどうなっているのかがわからない……。とりあえず.vimrc
で以下のように設定しておきました。
let g:ctrlp_jump_to_buffer = 2
let g:ctrlp_working_path_mode = 2
let g:ctrlp_clear_cache_on_exit = 0
let g:ctrlp_mruf_max = 500
nnoremap <Leader>f :CtrlP<CR>
nnoremap <Leader>b :CtrlPBuffer<CR>
nnoremap <Leader>m :CtrlPMRUFiles<CR>
あと.gvimrc
で
let g:ctrlp_max_height = &lines
として目一杯に一覧が出るようにも。
Command-Tの対抗って感じですかね? 僕のようにMRUとファイル参照メインの人には向いているんじゃないかと思います。あとMRU系のだけ探しているけどUniteはごつすぎてちょっと……とかいう人にも良さそうです。
設定を少し変えたので追記しておきます。
let g:ctrlp_by_filename = 1 " フルパスではなくファイル名のみで絞込み
let g:ctrlp_jump_to_buffer = 2 " タブで開かれていた場合はそのタブに切り替える
let g:ctrlp_clear_cache_on_exit = 0 " 終了時キャッシュをクリアしない
let g:ctrlp_mruf_max = 500 " MRUの最大記録数
let g:ctrlp_highlight_match = [1, 'IncSearch'] " 絞り込みで一致した部分のハイライト
let g:ctrlp_open_new_file = 1 " 新規ファイル作成時にタブで開く
let g:ctrlp_open_multi = '10t' " 複数ファイルを開く時にタブで最大10まで開く
新規ファイル作成の挙動はUniteのが良かった感じです。