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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:20:29