我想对ctrlp和vim使用ag(银色搜索器)。
我的.vimrc中有这个:
if executable("ag")
set grepprg=ag\ --nogroup\ --nocolor
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
endif
let g:ctrlp_show_hidden = 1
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*/.tmp/*,*/.sass-cache/*,*/node_modules/*,*.keep,*.DS_Store,*/.git/*
我希望ctrlp包含隐藏文件,但这些文件是隐藏的。如果我在ag命令中添加
-u
,它将显示所有隐藏文件,但不遵守wildignore或.gitignore。是否可以使其尊重这些? 最佳答案
如果您通过ctrlp_user_command
使用自定义查找器,则CtrlP(see documentation)不会使用几个选项,包括ctrlp_show_hidden
ctrlp_custom_ignore
和vim的wildignore
模式。
因此,您将只剩下搜索工具(在这种情况下为AG)的摆布。幸运的是,您可以做一些事情,这些事情应该可以为您提供所需的行为。
要显示隐藏的点文件,但仍然尊重ignore
文件,请对ag使用--hidden
选项:let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'
现在,要定义要忽略的模式,您可以使用ag自己的忽略文件.agignore。这可以是每个目录,也可以是全局目录,ag将在每次运行时对其进行检查。您将其放在您的家庭目录~/.agignore
中。
我知道让vis wildignore
处理模式可能会很好,但是使用.agignore
可以在cli中使用ag时获得这些限制的好处。如果要搜索所有文件,只需使用您提到的ag -u
命令绕过所有ignore
文件。
作为最后的花絮,您可以使用字典格式来定义g:ctrlp_user_command
,其中包含ignore
键,使CtrlP使用wildignore
模式。但是,我从未尝试过这样做,并且文档指出了潜在的性能损失。如果您不喜欢我提出的其他解决方案(see documentation),则可以尝试此方法。
关于vim - 在ctrlp + vim中使用AG,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18285751/