如何在telescope.vim中获取Prompt值并传递搜索词至其他函数?
在Telescope live_grep中映射按键传递搜索词到CtrlSF
直接给你实现方案,核心是通过Telescope的API抓取当前搜索词,再调用CtrlSF的命令:
配置Telescope的live_grep按键映射
在Telescope的setup配置里,针对live_grep picker添加自定义按键,插入模式下触发即可:require('telescope').setup({ pickers = { live_grep = { mappings = { i = { -- 这里映射<C-s>,你可以改成自己习惯的按键 ['<C-s>'] = function() -- 获取当前Telescope的picker实例 local picker = require('telescope.actions.state').get_current_picker(vim.api.nvim_get_current_buf()) -- 提取输入的搜索词 local search_term = picker:get_prompt() -- 先关掉Telescope窗口 require('telescope.actions').close(picker) -- 转义搜索词里的特殊字符,再调用CtrlSF vim.cmd('CtrlSF ' .. vim.fn.escape(search_term, ' \'"\\')) end, }, }, }, }, })代码逻辑说明
get_current_picker用来获取当前live_grep的picker对象,从中拿到你输入的搜索词- 调用
close关闭Telescope窗口,避免和CtrlSF的窗口重叠干扰 vim.fn.escape处理搜索词里的空格、引号等特殊字符,防止命令执行出错- 最后通过
vim.cmd执行CtrlSF命令,把搜索词直接传进去
额外扩展
如果需要给CtrlSF加额外参数(比如指定搜索文件类型、目录),直接在命令里追加就行:vim.cmd('CtrlSF ' .. vim.fn.escape(search_term, ' \'"\\') .. ' --type=python')
内容的提问来源于stack exchange,提问作者synic
相关产品推荐
相关产品推荐

