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

如何让Neovim的Telescope仅扫描当前打开目录而非全磁盘?

解决Telescope全局扫描与nvim-tree目录跳转问题

一、让Telescope仅扫描目标目录

1. 检查并手动切换工作目录

先执行:pwd命令查看Neovim当前工作目录,如果显示为根目录/,Telescope自然会扫描整个磁盘。你可以用:cd /path/to/your/target-dir手动切换到目标目录,之后Telescope的find_files就只会扫描该目录下的文件。

2. 配置Telescope默认使用当前工作目录

在你的Neovim配置文件(如init.lua)中添加如下配置,强制find_files以当前工作目录为扫描根:

require('telescope').setup{
  pickers = {
    find_files = {
      cwd = vim.fn.getcwd(),
      hidden = false,  -- 可选:不显示隐藏文件
      no_ignore = false  -- 可选:遵循.gitignore规则
    }
  }
}

3. 与nvim-tree联动,直接搜索选中目录

如果想在nvim-tree选中目录后,直接让Telescope扫描该目录,可在nvim-tree配置里添加自定义按键映射:

require("nvim-tree").setup({
  on_attach = function(bufnr)
    local api = require "nvim-tree.api"
    local function opts(desc)
      return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
    end

    -- 绑定<C-f>键:选中目录后,打开Telescope搜索该目录下的文件
    vim.keymap.set('n', '<C-f>', function()
      local node = api.tree.get_node_under_cursor()
      if node and node.type == 'directory' then
        require('telescope.builtin').find_files({cwd = node.absolute_path})
      end
    end, opts('Search in selected directory'))

    -- 保留默认映射
    api.config.mappings.default_on_attach(bufnr)
  end,
})

二、nvim-tree中进入特定目录并聚焦

要让nvim-tree进入特定目录并将其设为Neovim的当前工作目录(后续Telescope会默认扫描这个目录),直接在nvim-tree中选中目标目录后按下大写C键即可。该操作会:

  • 将Neovim的工作目录切换为选中的目录
  • nvim-tree自动聚焦到该目录,隐藏上层目录的层级显示

如果C键未生效,可手动在on_attach中添加映射:

vim.keymap.set('n', 'C', api.tree.change_root_to_node, opts('Switch to directory as root'))

内容的提问来源于stack exchange,提问作者Ryan Richard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:01:10