Setup CtrlP to use ripgrep in Vim
A few weeks ago I wrote about switching from CtrlP and The Silver Searcher to fzf and ripgrep. I have since returned to CtrlP and thought I’d share how to set that up with ripgrep too.
From my time with fzf, I can attest to the fact that it is indeed faster than CtrlP when the time comes to search for something. Having said that, I later discovered via a quick process of elimination that it also drags down Vim’s general performance.
My old CtrlP config came from thoughtbot.
if executable('ag')
" Use ag over grep
set grepprg=ag\ --nogroup\ --nocolor
" Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
" ag is fast enough that CtrlP doesn't need to cache
let g:ctrlp_use_caching = 0
endif
I’ve gone back to the same basic settings, with one addition. The ripgrep equivalent to the above is as follows.
if executable('rg')
set grepprg=rg\ --color=never
let g:ctrlp_user_command = 'rg %s --files --color=never --glob ""'
let g:ctrlp_use_caching = 0
endif
The addition mentioned above is also the change that had the biggest impact. Had I known about it, I may not have ventured out on this experiment to begin with.
Meet wildignore
. It’s a setting that takes file patterns you want Vim to ignore during file or directory name completion.
Outside of the above ripgrep conditional, add the following to your .vimrc
to tell Vim to ignore the git and temp directories as well as Vim’s swap files. You can of course add more patterns to this as needed.
set wildignore+=*/.git/*,*/tmp/*,*.swp