vimのファイル検索プラグインctrlp.vimの設定

vimのファイル検索用のプラグインctrlpを紹介します。
数あるvimのプラグインの中でも私の特にお気に入りのプラグインの1つです。

 

参考:私が使用している便利なプラグイン一覧
vim とても強力なプラグインたち

 

ctrlp.vimとは?

vimファイル検索用のプラグイン。
シンプルかつ高速にファイルを検索し、開くことができます。
検索には正規表現や曖昧検索による絞り込みもでき、隠しファイルの検索のオンオフを切り替えることができるなど、色々な機能が備わっていてとても重宝しています。

vimには色々なファイル検索用のプラグインがありますが、ctrlpは特にファイル検索が高速なように思います。

githubのkien/ctrlp.vimというかリポジトリで開発、管理されています。
現在は ctrlpvim/ctrlp.vim に移行して管理されています。

ctrlpvim/ctrlp.vimのgithubページはこちら。
https://github.com/ctrlpvim/ctrlp.vim

 

ちょっとした注意点

ctrlp.vimはファイルのキャッシュを作成し、そのキャッシュをもとにファイル検索を行います。
キャッシュを利用することで高速検索を実現しているのですね。

これが非常にありがたいのですが、ちょっとした弊害も。
新しいファイルを作成した場合、そのファイルはキャッシュに登録されていない訳です。
つまり、そのファイルはctrlpの検索で引っかからない訳です。

そこで、新しいファイルも探したい場合は以下のコマンドで一度キャッシュを消去する必要があります。

CtrlPの”P”は大文字です。お間違えのないように。

 

カスタマイズ

私はプラグイン管理にdeinを使用しているため、deinでの設定(dein.toml内での設定)を以下に記述します。
deinを使用していない方は,hook_add = ”’ ~ ”’ で囲まれた部分を.vimrc等にコピーしてみてください。

特にお勧めの設定は、ファイル名を指定しないでvimを立ち上げた時に自動的にctrlpを起動する設定です。
この設定を使い、キーボードショートカットにvimの起動をわりあてようもんなら、一瞬で狙ったファイルをvimで開けるようになります。

 

補足説明

function! CtrlPEnter(), CtrlpLeave()
lightline.vimでステータスラインを表示するために set laststatus=2 のオプションを使用しているのですが、このオプションがCtrlPのバッファでも発動すると見栄えが悪くなってしまいます。
(CtrlPバッファでステータスラインを表示する必要がないので。)

CtrlPEnter(), CtrlpLeave()という関数を定義してCtrlPを起動したときにはステータスラインの表示をオフに、CtrlPから抜けるタイミングでステータスラインの表示をオンにしています。

function! CtrlPIfEmpty()
ファイル名が空の場合にCtrlPを立ち上げてくれる関数を定義しています。
autocmdを用いて、vimがファイル名の指定なしで起動した場合にctrlpを呼びだすように設定しています。

ファイルを指定せずにvimを起動した際に開きたいファイルを高速で絞り込めるようになります。

キーマッピングの変更
Ctrl + p というキーマッピングが私の使用しているyankround.vimというプラグインの設定とバッティングしているため、キーマッピングを <C-p> から <Leader>e に変更しています。

<C-p>コマンドが他の設定と被っている場合にはctrlpの(もしくは被っている他のコマンド)のマッピングを変更してあげましょう。

 

追記(管理リポジトリの変更)

記事の上部でも少し記述しましたが、ctrlp.vimを管理しているリポジトリに変更がありました。
以前まではkein/ctrlp.vimというgithubのページで管理されていましたが、現在は

kein/ctrlp.vim   →   ctrlpvim/ctrlp.vim

というリポジトリに変更されています。

 

古いリポジトリ、kien/ctrlp.vimのreadmeに以下のような記述があります。

#This project is unmaintained You should use this fork instead.
このプロジェクトはもうメンテナンスされた無いから代わりにこっちをつかってね。

今後の更新はctrlpvim/ctrlp.vimというリポジトリで行われるようですので、
古いリポジトリのプラグインをお使いの方は早いうちに新しいリポジトリのものに更新した方が良いでしょう。

 

参考:私が使用している便利なプラグイン一覧
vim とても強力なプラグインたち