You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Neovim的Telescope模糊查找器遍历嵌套Git仓库文件?

解决Telescope无法搜索子Git仓库文件的问题

Telescope的find_files默认会跳过包含.git目录的子文件夹(也就是独立的Git仓库),因为它默认遵循Git的忽略逻辑。下面给你几个实用的解决办法:

方法1:临时关闭忽略规则(简单粗暴)

直接修改你的映射,调用find_files时加上no_ignore = true参数,这样会遍历所有文件,包括子仓库里的内容,但同时也会搜出.gitignore里标记的文件:

vim.keymap.set('n', '<leader>ff', function()
  builtin.find_files({ no_ignore = true })
end, {})

方法2:精准包含指定子仓库

如果不想搜所有被忽略的文件,只想包含特定的子仓库目录,可以用additional_args添加--glob规则,既排除.git内部文件,又包含目标子仓库:
比如你的子仓库在drivers/third-party-chip目录下,配置如下:

vim.keymap.set('n', '<leader>ff', function()
  builtin.find_files({
    additional_args = function()
      return { '--glob', '!**/.git/*', '--glob', '**/drivers/third-party-chip/**' }
    end
  })
end, {})

方法3:全局配置默认遍历子仓库

如果希望find_files默认就能搜索所有子仓库,同时跳过每个仓库里的.git目录(避免搜内部垃圾文件),可以修改Telescope的全局配置:

如果你用fd作为查找工具(推荐,速度更快)

require('telescope').setup{
  pickers = {
    find_files = {
      find_command = {
        'fd', '--type', 'f', '--strip-cwd-prefix', '--glob', '!**/.git/*'
      }
    }
  }
}

如果你用系统默认的find命令

require('telescope').setup{
  pickers = {
    find_files = {
      find_command = {
        'find', '.', '-type', 'f', '-not', '-path', '*/.git/*'
      }
    }
  }
}

配置完后,原来的<leader>ff映射不用改,就能直接搜到所有子仓库里的文件了。

内容的提问来源于stack exchange,提问作者Patrick Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:35:34