跳到主要内容

Telescope Custom Actions 入门指南

· 阅读需 2 分钟

基础结构

一个典型的 Telescope action 由两部分组成:

  1. 映射注册 (Mapping Registration)
  2. 动作实现 (Action Implementation)

快速开始

1. 注册按键映射

telescope_builtin.find_files({
attach_mappings = function(prompt_bufnr, map)
-- 在这里注册你的按键映射
map("n", "dd", function()
my_custom_action(prompt_bufnr)
end)
return true
end,
})

2. 实现动作函数

function my_custom_action(prompt_bufnr)
-- 1. 获取当前 picker
local picker = action_state.get_current_picker(prompt_bufnr)

-- 2. 获取选中项
local selection = action_state.get_selected_entry()

-- 3. 实现具体功能
-- 例如删除、复制、移动等操作
end

常用 API

  • action_state.get_current_picker(prompt_bufnr): 获取当前 picker
  • action_state.get_selected_entry(): 获取选中项
  • picker:delete_selection(callback): 删除选中项
  • picker:get_selection(): 获取选择的内容

实用示例

删除文件

function delete_file(prompt_bufnr)
local picker = action_state.get_current_picker(prompt_bufnr)
picker:delete_selection(function(selection)
-- 执行删除操作
return os.remove(selection[1])
end)
end

预览文件

function preview_file(prompt_bufnr)
local selection = action_state.get_selected_entry()
-- 在新窗口中打开文件
vim.cmd('split ' .. selection[1])
end