首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ctrlp + vim中使用ag

在ctrlp + vim中使用ag
EN

Stack Overflow用户
提问于 2013-08-17 14:12:05
回答 1查看 13.1K关注 0票数 24

我想使用ag (银色搜索器)与ctrlp和vim。我的.vimrc中有以下内容:

代码语言:javascript
复制
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包含隐藏文件,但这些文件是隐藏的。如果我将-u添加到ag命令中,它会显示所有隐藏的文件,但不会考虑wildignore或.gitignore。有没有可能让它尊重这些?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-04 04:38:55

如果您通过ctrlp_user_command使用自定义查找器,则CtrlP (see documentation)不会使用几个选项,包括ctrlp_show_hidden ctrlp_custom_ignore和vim的wildignore模式。

g:ctrlp_show_hidden

..。

注意:使用|g:ctrlp_user_command|定义的命令时不适用。

g:ctrlp_custom_ignore

..。

注意#1:默认情况下,| |g:ctrlp_user_command| |和|g:ctrlp_custom_ignore|仅在|globpath()|用于扫描文件时才适用,因此,当使用通过wildignore定义的命令时,这些选项不适用。

所以你只能任由你的搜索工具摆布了,在本例中就是ag。幸运的是,你可以做一些事情,让你得到你想要的行为。

要使隐藏的点文件出现,但仍要遵守ignore文件,请使用ag的--hidden选项:

let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'

现在,为了定义要忽略的模式,可以使用ag自己的忽略文件.agignore。它可以是每个目录,也可以是ag在每次运行时都会检查的全局目录。您可以将其放入您的家庭目录~/.agignore中。

我知道让vims wildignore来处理模式是很好的,但是在.agignore中,当你从cli中使用ag时,你会得到这些限制的好处。如果您想搜索所有文件,只需使用您提到的ag -u命令绕过任何ignore文件。

最后,有一种字典格式可以用来定义g:ctrlp_user_command,它包含一个使CtrlP使用wildignore模式的ignore键。然而,我从来没有尝试过,文档指出了一个潜在的性能影响。如果您不喜欢我提出的另一个解决方案(see documentation),您可以尝试此方法。

注意事项#3:除非使用|Dictionary|格式并定义了'ignore‘并将其设置为1,否则在使用这些自定义命令时,|wildignore|和|g:ctrlp_custom_ignore|选项将不适用。当不存在时,默认情况下'ignore‘设置为0,以保留使用外部命令的性能优势。

票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18285751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档