読者です 読者をやめる 読者になる 読者になる

Vim - ctrlp.vimでキャッシュが更新されないときに確認すること

vim

kien/ctrlp.vimを使っていて、 以下のキャッシュクリアを行なってもキャッシュが更新されないことがありました。

  • :CtrlPClearCache
  • :CtrlPClearAllCaches
  • ctrlp実行中にF5

なんでだろうと思って調べたところ、自分の設定ミスでした。

" vimrc
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files']

:CtrlP(ファイル一覧)で表示される一覧は、このg:ctrlp_user_commandの実行結果を使っています。 (この結果がキャッシュファイルに書き込まれる)

ファイル一覧取得のコマンドがgit ls-filesにしてあるので、 インデックスに追加されていないファイルは除外されていた、というわけでした。

ちなみにヘルプにはちゃんとそう書いてありました。

" Single VCS, listing command does not list untracked files:
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files']

ひとまず次のように書き換えたところ、無事期待通り動くようになりました。

" vimrc
" (findやgrepが使える環境前提)
let g:ctrlp_user_command = ['.git', 'cd %s && find . -type f | grep -v .git']

.gitの除外はgrep -vじゃなくてg:ctrlp_custom_ignoreの設定で効いてくれそうな気はするのですが、上手く効かずよく分からなかったのでgrepにしてます。