Vim插件之ctrlp

下文提到的关于ctrlp使用ag引发的问题已经得到解决,具体内容请参考解决Vim使用ctrlp+ag搜索不能扫描隐藏的文件和目录和自定义忽略文件问题
如果你使用的Vim的版本大于等于8.1,推荐使用fzf.vim,功能更为强大,具体内容可参考Vim插件之fzf.vim
ctrlp,Vim的模糊搜索工具,支持文件,缓冲区,MRU(Most Recently Used)文件和标签等的搜索,也支持通过正则表达式搜索(Ctrl-r进行切换),同类软件还有 command-t,fzf等。ctrlp在速度上虽然有些逊色,但扩展性好,而且因为是由纯vimscript实现的,因此依赖少配置简单。另外,如果觉得ctrlp的速度不理想,还可以调用外部程序比如ag来提升搜索速度,下面是我的配置

"ctrlp
"p搜索当前目录下文件
let g:ctrlp_map = 'p'
let g:ctrlp_cmd = 'CtrlP'
"f搜索MRU文件
nmap f :CtrlPMRUFiles
"b显示缓冲区文件,并可通过序号进行跳转
nmap b :CtrlPBuffer
"设置搜索时忽略的文件
let g:ctrlp_custom_ignore = {
    \ 'dir':  '\v[\/]\.(git|hg|svn|rvm)$',
    \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc)$',
    \ }
let g:ctrlp_working_path_mode = 0
let g:ctrlp_match_window_bottom = 1
"修改QuickFix窗口显示的最大条目数
let g:ctrlp_max_height = 15
let g:ctrlp_match_window_reversed = 0
"设置MRU最大条目数为500
let g:ctrlp_mruf_max = 500
let g:ctrlp_follow_symlinks = 1
"默认使用全路径搜索,置1后按文件名搜索,准确率会有所提高,可以用进行切换
let g:ctrlp_by_filename = 1
"默认不使用正则表达式,置1改为默认使用正则表达式,可以用进行切换
let g:ctrlp_regexp = 0
"自定义搜索列表的提示符
let g:ctrlp_line_prefix = '♪ '

如果你想提升搜索速度可以将ctrlp与ag搭配使用,ag的安装可以参考Vim插件之ack.vim中相应的部分,下面是ctrlp调用ag进行搜索的方法

"调用ag进行搜索提升速度,同时不使用缓存文件
if executable('ag')
  set grepprg=ag\ --nogroup\ --nocolor
  let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
  let g:ctrlp_use_caching = 0
endif

由于使用外部工具ag扫描必须开启g:ctrlp_user_command选项,而开启这个选项会带来一些副作用,比如g:ctrlp_show_hiddeng:ctrlp_custom_ignore'会失效 ,g:ctrlp_show_hidden用于搜索隐藏的文件和目录, g:ctrlp_custom_ignore用于自定义忽略的文件,如果有这些方面的需求的话就需要权衡一下了。另外,这个项目是有中文文档的,进入~/.vim/bundle/ctrlp.vim/doc中会发现有个ctrlp.cnx的文件,这个就是中文文档,它是同步更新的。

你可能感兴趣的:(Vim)