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

NeoVim Telescope插入模式Ctrl+H映射显示隐藏文件失效求助

解决Telescope插入模式映射显示隐藏文件无效的问题

问题原因

  • 原配置中直接执行require("telescope.builtin").find_files(...)会在Neovim启动阶段就运行该命令,而非按下时触发。
  • 这种写法会直接新开一个find_files窗口,无法在当前已打开的Telescope会话中切换隐藏文件显示状态。

解决方案

方式一:使用内置切换动作(推荐)

Telescope内置了toggle_hidden动作,可直接映射到,实现当前Telescope窗口中切换隐藏文件的显示/隐藏:

require('telescope').setup {
  defaults = {
    mappings = {
      i = {
        ['<C-u>'] = false,
        ['<C-d>'] = false,
        ['<C-h>'] = require('telescope.actions').toggle_hidden,
      },
    },
  },
}

方式二:自定义函数调用带隐藏参数的find_files

如果需要在按下时直接打开显示隐藏文件的find_files(包括当前未打开Telescope的场景),可以自定义函数保留当前搜索词并重新调用:

local function find_files_with_hidden()
  local picker = require('telescope.actions.state').get_current_picker(vim.api.nvim_get_current_buf())
  local search_query = picker and picker:_get_prompt() or ''
  require('telescope.builtin').find_files({
    hidden = true,
    default_text = search_query,
    layout_config = { prompt_position = "top" }
  })
end

require('telescope').setup {
  defaults = {
    mappings = {
      i = {
        ['<C-u>'] = false,
        ['<C-d>'] = false,
        ['<C-h>'] = find_files_with_hidden,
      },
    },
  },
}

补充说明

  • 方式一的交互更符合Telescope的使用逻辑,适合在已打开Telescope窗口时快速切换显示状态。
  • 方式二则更适合作为快速调用快捷键,无论当前是否打开Telescope都能直接触发显示隐藏文件的搜索。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:15:03