在命令行上使用ag
时,如下所示:$> ag . --ignore="*node_modules/*/node_modules" -l --nocolor -f -U -g ""
我可以避免在节点服务中深入搜索任何不超过一层的node_modules目录,这是所需的行为。
但是,当我在vimrc中使用以下命令时,不忽略一层以上的node_modules目录:
" Use The Silver Searcher https://github.com/ggreer/the_silver_searcher
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 --ignore="*node_modules/*/node_modules" -l --nocolor -f -U -g ""'
endif
如何设置
ag
和ctrlp
以正确忽略那些目录?不知道在移植到vimrc时是否需要使用其他语法(例如regex)或其他一些陷阱。
我之所以没有将其放在wildignore中的原因是,在我的.gitignore中忽略了node_modules,所以我使用
-U
选项来忽略任何vcs文件(从而允许ag
搜索node_modules)-但该选项似乎也绕开野性。 最佳答案
像您一样,我确实使用两种工具,但是忽略文件夹的方式不同
对于 Ag ,我使用.agignore
文件,该文件具有与.gitignore
相同的sintax,并且就像它一样,它可以放入您的主文件夹或项目文件夹中。
不知道这是否可以解决 Ctrlp 的问题,无论如何对我来说已经非常快了,所以我使用了普通的ignore变量,如下所示:
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/](doc|tmp|node_modules)',
\ 'file': '\v\.(exe|so|dll)$',
\ }
关于vim - Vim Ctrlp无法正确解析Ag(银色搜索)--ignore选项正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24479101/