基础结构
一个典型的 Telescope action 由两部分组成:
- 映射注册 (Mapping Registration)
- 动作实现 (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)
: 获取当前 pickeraction_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