有馬総一郎のブログ

(彼氏の事情)

2021年05月27日 22:17:23 JST - 3 minute read - Vim

進化し続けるCtrlP

やはり、雑魚Vimmerにとって fzf vimは、Windowsでの利用を余り考慮されてないような節を感じるので、 ctrlpvim/ctrlp.vim1に戻ることにした。

ただ、自分のWindows環境ではユーザーフォルダでCtrlPするとそれなりに待つ。

[Vim Plugin]CtrlPの紹介と便利な使い方、設定 | 大专栏に為になる情報が載っていたので、これを参考に設定する。

Vim終了時にキャッシュファイルを削除しない

Set this to 0 to enable cross-session caching by not deleting the cache files
upon exiting Vim: >
let g:ctrlp_clear_cache_on_exit = 1

Enable/Disable per-session caching: >
let g:ctrlp_use_caching = 1

0 - Disable caching.
1 - Enable caching.
n - When bigger than 1, disable caching and use the number as the limit to enable caching again.

let g:ctrlp_clear_cache_on_exit = 0
let g:ctrlp_use_caching = 1

g:ctrlp_use_caching = 1n の制限数ってのが意味が分からない。

F5でキャッシュ更新可能。これはCtrPで有効なので、

  nnoremap <F5> :<C-u>source $HOME/.config/nvim/init.vim<CR>

などしても被らない。

ファジー検索時の入力反映に、遅延時間を設定にする

Set this to 1 or bigger to enable the lazy-update feature: only update the
match window after typing’s been stopped for a certain amount of time: >
let g:ctrlp_lazy_update = 0

If is 1, update after 250ms that value as default tuned. If bigger than 1, the
number will be used as the delay time in milliseconds.

つまり検索の際にms単位のウェイトを入れることができる。

let g:ctrlp_lazy_update = 200

そして、 CtrlP に出戻りしたにあるとおり mattn/ctrlp-matchfuzzyを導入すればファジーマッチが高速化される。

更に(というか大分前からだが)、追加プラグイン無しで

CtrlPBookmarkDirAddでディレクトリをブックマークすることが出来て、CtrlPBookmarkDirで呼び出すことができる。CtrlPMixedにも で表示切り替えできる。

なのだが、Ubuntu環境だと、何故か$HOMECtrlPをすると固まる。その時、Ctrl+cすればキャンセルできるとかあるのだが、キャンセルできない。Windowsでは起きず、しかも容量とか圧倒的にWindowsの方が大きいのに…dotfileのシンボリックリンクがおかしくしているのだろうか、でもリンクは無視されるはずだしなぁ。

と思ったら、

Note: does not apply when a command defined with |g:ctrlp_user_command| is being used.

と外部コマンドを使用している場合は適用されない、とあった。いや、だとしてもripgrepはデフォルトでシンボリックリンクは無視するはずで、もし含める場合は-Lオプションが必要なはず。

兎に角、 How to prevent ctrlp from indexing $HOME · Issue #560 · kien/ctrlp.vim · GitHubにあったハック

  let g:ctrlp_user_command = '[ $PWD == $HOME ] && echo "In HOME Directory" || rg %s --files --color=never --glob ""'

どおりに行うことで回避できた。

他にも注意点はあって CtrlPDir is very slowにあるとおり、CtrlPDirは外部コマンドを使っていないので、場所によってはもの凄く遅い。

相変らず simplenote-vim/simplenote.vimで開いたものは、バッファ一覧に載らないとかあるけれど、元々、他のfuzzy searchプラグインも使いこなしていたわけでないので、とりあえずCtrlPMixedを叩いておけばOKなこのプラグインをしばらくは使っていこうと思う。


  1. しかし、今だにctrlp.vimで検索するとkien/ctrlp.vimが上位にヒットするのはどうにかならんのか。 ↩︎