我想对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/

10-13 01:19