48 lines
1.9 KiB
Lua
48 lines
1.9 KiB
Lua
-- ============================================================================
|
||
-- 模糊搜索 (telescope)
|
||
-- ============================================================================
|
||
|
||
return {
|
||
{
|
||
"nvim-telescope/telescope.nvim",
|
||
branch = "0.1.x",
|
||
dependencies = {
|
||
"nvim-lua/plenary.nvim",
|
||
"nvim-telescope/telescope-ui-select.nvim",
|
||
},
|
||
cmd = "Telescope",
|
||
keys = {
|
||
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "查找文件" },
|
||
{ "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "全局搜索" },
|
||
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "切换缓冲区" },
|
||
{ "<leader>fh", "<cmd>Telescope help_tags<cr>", desc = "帮助文档" },
|
||
{ "<leader>fk", "<cmd>Telescope keymaps<cr>", desc = "查找键位" },
|
||
{ "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "最近文件" },
|
||
},
|
||
-- 启动即加载:ui-select 扩展需要全局接管 vim.ui.select,
|
||
-- 懒加载会导致未触发 :Telescope 时(如 <leader>rr)回退到原生 UI
|
||
lazy = false,
|
||
opts = {
|
||
defaults = {
|
||
prompt_prefix = " > ",
|
||
selection_caret = " > ",
|
||
layout_strategy = "flex",
|
||
},
|
||
},
|
||
config = function(_, opts)
|
||
local telescope = require("telescope")
|
||
|
||
-- extensions 需要 require telescope.themes,必须在 config 里构造
|
||
opts.extensions = {
|
||
["ui-select"] = {
|
||
require("telescope.themes").get_dropdown({}),
|
||
},
|
||
}
|
||
|
||
telescope.setup(opts)
|
||
-- 用 pcall 保护,避免 ui-select 扩展未安装时崩溃
|
||
pcall(telescope.load_extension, "ui-select")
|
||
end,
|
||
},
|
||
}
|