Vimでファイルを開いたりする定番プラグインの一つに、ctrlp.vimというプラグインがあります。
見た目がよく、特別な設定なしに軽快に動き、なかなかいいですね。
僕はUnite.vimをメインに使っていたために今まで導入していなかったのですが、「ディレクトリ配下全てのファイルから、特定のファイルを開く」というケースではctrlp.vimを使うようになりました。
ただ、ctrlp.vimのプロンプトでは結構大胆にキーマッピングを潰される上、自分の直感とずれててとても使いにくく感じました。
幸い、g:ctrlp_prompt_mappings
変数で一括で変更出来るので思い切り変更しました。
letg:ctrlp_map ='<C-f>'letg:ctrlp_prompt_mappings = {
\ 'PrtBS()': ['<c-h>'],
\ 'PrtDeleteWord()': ['<c-w>'],
\ 'PrtCurEnd()': ['<c-e>'],
\ 'PrtCurLeft()': ['<c-b>'],
\ 'PrtCurRight()': ['<c-f>'],
\ 'PrtSelectMove("j")': ['<c-j>'],
\ 'PrtSelectMove("k")': ['<c-k>'],
\ 'PrtHistory(-1)': ['<c-n>'],
\ 'PrtHistory(1)': ['<c-p>'],
\ 'AcceptSelection("e")': ['<cr>'],
\ 'ToggleRegex()': ['<c-r>'],
\ 'ToggleByFname()': ['<c-d>'],
\ 'PrtExit()': ['<c-l>','<esc>','<c-c>'],
\ 'ToggleFocus()': ['<nop>'],
\ 'PrtExpandDir()': ['<nop>'],
\ 'AcceptSelection("h")': ['<nop>'],
\ 'AcceptSelection("t")': ['<nop>'],
\ 'AcceptSelection("v")': ['<nop>'],
\ 'ToggleType(1)': ['<nop>'],
\ 'ToggleType(-1)': ['<nop>'],
\ 'PrtInsert()': ['<nop>'],
\ 'PrtCurStart()': ['<nop>'],
\ 'PrtClearCache()': ['<nop>'],
\ 'PrtDeleteEnt()': ['<nop>'],
\ 'CreateNewFile()': ['<nop>'],
\ 'MarkToOpen()': ['<nop>'],
\ 'OpenMulti()': ['<nop>'],
\ 'PrtDelete()': ['<nop>'],
\ 'PrtSelectMove("t")': ['<nop>'],
\ 'PrtSelectMove("b")': ['<nop>'],
\ 'PrtSelectMove("u")': ['<nop>'],
\ 'PrtSelectMove("d")': ['<nop>'],
\ }
<c-h>
で削除、<c-f>
と<c-b>
で前後にカーソル移動、単純にファイルを開く以上に使うキーは未設定にしました。また、プラグイン名の通り<c-f>
で動作を開始させるのも、既存のマッピングに衝突していたので、<c-f>
に変更しました。
ctrlp.vimの魅力を犠牲にするような設定で偲びないですが、複雑なことはUnite.vimや他のプラグインを使うので、こんな感じで使っていこうと思います。