在命令行上使用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

如何设置agctrlp以正确忽略那些目录?
不知道在移植到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/

10-12 12:43