在命令行中使用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时是否需要使用不同的语法(如正则表达式)或其他一些问题。
我没有把它放在野外的原因是我的.gitignore中忽略了node_modules,所以我使用-U
选项忽略任何vcs文件(从而允许{{{ 1}}搜索node_modules) - 但是这个选项似乎也绕过了wildignore。
答案 0 :(得分:6)
和我一样,我使用这两种工具,但我忽略文件夹的方式不同
对于 Ag ,我使用.agignore
文件,它与.gitignore
具有相同的sintax,就像它一样,它可以放在你的主文件夹或项目文件夹中。< / p>
不确定这是否能解决您使用 Ctrlp 的问题,无论如何它对我来说已经非常快了所以我使用正常的忽略变量,如下所示:
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/](doc|tmp|node_modules)',
\ 'file': '\v\.(exe|so|dll)$',
\ }