NeoVim Telescope插入模式Ctrl+H映射显示隐藏文件失效求助
解决Telescope插入模式映射显示隐藏文件无效的问题
问题原因
- 原配置中直接执行
require("telescope.builtin").find_files(...)会在Neovim启动阶段就运行该命令,而非按下时触发。 - 这种写法会直接新开一个find_files窗口,无法在当前已打开的Telescope会话中切换隐藏文件显示状态。
解决方案
方式一:使用内置切换动作(推荐)
Telescope内置了toggle_hidden动作,可直接映射到
require('telescope').setup { defaults = { mappings = { i = { ['<C-u>'] = false, ['<C-d>'] = false, ['<C-h>'] = require('telescope.actions').toggle_hidden, }, }, }, }
方式二:自定义函数调用带隐藏参数的find_files
如果需要在按下
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
相关产品推荐
相关产品推荐

