Ag(The Silver Searcher)默认不递归搜索?含fzf-vim :Ag命令问题
ag(The Silver Searcher)默认递归搜索问题排查与解决
ag的默认行为
ag的默认行为就是递归搜索当前目录及所有子目录,不需要额外加./**这种路径参数。你现在遇到的只搜当前目录的情况,肯定是配置或环境里有异常设置。
问题排查与解决步骤
检查ag的全局配置文件:
ag会读取~/.agrc、~/.agignore或系统级的/etc/ag.conf,如果这些文件里写了--non-recursive(禁止递归)或者--depth 1(限制深度为1),就会覆盖默认行为。可以先执行ag --no-config pattern跳过配置文件验证,如果这次能递归搜索,就说明是配置文件的问题,直接修改对应的配置文件删掉限制参数即可。检查fzf-vim的
:Ag配置:
你的vim配置文件(比如~/.vimrc或~/.config/nvim/init.vim)里可能自定义了:Ag的命令参数,比如设置了let g:fzf_ag_command = 'ag --depth 1'。找到这类配置,删掉--depth 1或者改成--depth -1(无限制递归)就行。检查当前目录的忽略文件:
ag会自动遵守.gitignore、.ignore里的规则,如果当前目录的这些文件里写了*/(排除所有子目录),也会导致不递归。可以执行ag --no-ignore pattern验证,要是能正常递归,就修正这些忽略文件的规则。更新ag版本:
某些旧版本的ag可能存在bug,或者发行版的包修改了默认行为。执行ag --version看版本,用包管理器更新到最新稳定版试试。
快速恢复默认递归的方法
- 删掉
~/.agrc里的--non-recursive或--depth限制参数 - 移除vim配置中对
g:fzf_ag_command的深度限制 - 修正当前目录
.gitignore/.ignore里的子目录排除规则
内容的提问来源于stack exchange,提问作者hilbor
相关产品推荐
相关产品推荐

