初始化dotfiles
This commit is contained in:
11
nvim/lua/plugins/autopairs.lua
Normal file
11
nvim/lua/plugins/autopairs.lua
Normal file
@ -0,0 +1,11 @@
|
||||
-- ============================================================================
|
||||
-- 自动括号补全 (nvim-autopairs)
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
49
nvim/lua/plugins/cmake-tools.lua
Normal file
49
nvim/lua/plugins/cmake-tools.lua
Normal file
@ -0,0 +1,49 @@
|
||||
-- ============================================================================
|
||||
-- CMake 工具 (cmake-tools.nvim)
|
||||
-- CMake 项目全流程:生成、构建、运行、调试
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"Civitasv/cmake-tools.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
ft = { "cmake", "c", "cpp" },
|
||||
opts = {
|
||||
cmake_command = "cmake",
|
||||
ctest_command = "ctest",
|
||||
cmake_use_preset = true,
|
||||
cmake_regenerate_on_save = true,
|
||||
cmake_generate_options = { "-DCMAKE_EXPORT_COMPILE_COMMANDS=1" },
|
||||
cmake_build_directory = "build",
|
||||
cmake_soft_link_compile_commands = true,
|
||||
cmake_dap_configuration = {
|
||||
name = "cpp",
|
||||
type = "codelldb",
|
||||
request = "launch",
|
||||
stopOnEntry = false,
|
||||
runInTerminal = true,
|
||||
console = "integratedTerminal",
|
||||
},
|
||||
cmake_executor = {
|
||||
name = "quickfix",
|
||||
opts = {
|
||||
show = "always",
|
||||
position = "belowright",
|
||||
size = 10,
|
||||
auto_close_when_success = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>cg", "<cmd>CMakeGenerate<cr>", desc = "CMake 生成" },
|
||||
{ "<leader>cb", "<cmd>CMakeBuild<cr>", desc = "CMake 构建" },
|
||||
{ "<leader>cr", "<cmd>CMakeRun<cr>", desc = "CMake 运行" },
|
||||
{ "<leader>cd", "<cmd>CMakeDebug<cr>", desc = "CMake 调试" },
|
||||
{ "<leader>cc", "<cmd>CMakeClean<cr>", desc = "CMake 清理" },
|
||||
{ "<leader>cs", "<cmd>CMakeSelectBuildType<cr>", desc = "选择构建类型" },
|
||||
{ "<leader>ct", "<cmd>CMakeSelectBuildTarget<cr>", desc = "选择构建目标" },
|
||||
{ "<leader>cl", "<cmd>CMakeSelectLaunchTarget<cr>", desc = "选择运行目标" },
|
||||
{ "<leader>ck", "<cmd>CMakeSelectKit<cr>", desc = "选择编译器" },
|
||||
},
|
||||
},
|
||||
}
|
||||
42
nvim/lua/plugins/colorscheme.lua
Normal file
42
nvim/lua/plugins/colorscheme.lua
Normal file
@ -0,0 +1,42 @@
|
||||
-- ============================================================================
|
||||
-- 主题 (tokyonight)
|
||||
-- 透明背景,与终端透明效果融合
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"folke/tokyonight.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {
|
||||
style = "night",
|
||||
transparent = true,
|
||||
styles = {
|
||||
sidebars = "transparent",
|
||||
floats = "transparent",
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("tokyonight").setup(opts)
|
||||
vim.cmd.colorscheme("tokyonight")
|
||||
|
||||
-- inlay hints 去掉背景,融入透明主题
|
||||
vim.api.nvim_create_autocmd("ColorScheme", {
|
||||
pattern = "tokyonight",
|
||||
callback = function()
|
||||
vim.api.nvim_set_hl(0, "LspInlayHint", {
|
||||
bg = "NONE",
|
||||
fg = "#565f89",
|
||||
italic = true,
|
||||
})
|
||||
end,
|
||||
})
|
||||
-- 立即生效一次
|
||||
vim.api.nvim_set_hl(0, "LspInlayHint", {
|
||||
bg = "NONE",
|
||||
fg = "#565f89",
|
||||
italic = true,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
56
nvim/lua/plugins/completion.lua
Normal file
56
nvim/lua/plugins/completion.lua
Normal file
@ -0,0 +1,56 @@
|
||||
-- ============================================================================
|
||||
-- 智能补全 (blink.cmp)
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"saghen/blink.cmp",
|
||||
version = "*",
|
||||
event = { "InsertEnter", "CmdlineEnter" },
|
||||
opts = {
|
||||
keymap = {
|
||||
preset = "super-tab",
|
||||
["<C-j>"] = { "select_next" },
|
||||
["<C-k>"] = { "select_prev" },
|
||||
["<C-u>"] = { "scroll_documentation_up" },
|
||||
["<C-n>"] = { "scroll_documentation_down" },
|
||||
-- 命令行模式:Enter 确认补全而非执行命令
|
||||
["<CR>"] = { "accept", "fallback" },
|
||||
},
|
||||
appearance = {
|
||||
use_nvim_cmp_as_default = true,
|
||||
nerd_font_variant = "normal",
|
||||
},
|
||||
sources = {
|
||||
default = { "lsp", "path", "buffer", "snippets" },
|
||||
},
|
||||
cmdline = {
|
||||
enabled = true,
|
||||
sources = function()
|
||||
if vim.fn.getcmdline():find("/") then
|
||||
return { "buffer" }
|
||||
end
|
||||
return { "cmdline" }
|
||||
end,
|
||||
completion = { menu = { auto_show = true } },
|
||||
},
|
||||
completion = {
|
||||
menu = {
|
||||
border = "rounded",
|
||||
-- scrollbar = false,
|
||||
draw = {
|
||||
columns = {
|
||||
{ "label", "label_description", gap = 1 },
|
||||
{ "source_name" },
|
||||
},
|
||||
},
|
||||
},
|
||||
documentation = {
|
||||
auto_show = true,
|
||||
auto_show_delay_ms = 500,
|
||||
window = { border = "rounded" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
32
nvim/lua/plugins/conform.lua
Normal file
32
nvim/lua/plugins/conform.lua
Normal file
@ -0,0 +1,32 @@
|
||||
-- ============================================================================
|
||||
-- 自动格式化 (conform.nvim)
|
||||
-- 保存时自动格式化,手动 <leader>cf 触发
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"stevearc/conform.nvim",
|
||||
event = { "BufWritePre" },
|
||||
cmd = { "ConformInfo" },
|
||||
keys = {
|
||||
{ "<leader>cf", function() require("conform").format({ async = true }) end, desc = "格式化" },
|
||||
},
|
||||
opts = {
|
||||
format_on_save = {
|
||||
timeout_ms = 500,
|
||||
lsp_fallback = true,
|
||||
},
|
||||
formatters_by_ft = {
|
||||
rust = { "rustfmt" },
|
||||
lua = { "stylua" },
|
||||
c = { "clang-format" },
|
||||
cpp = { "clang-format" },
|
||||
},
|
||||
formatters = {
|
||||
["clang-format"] = {
|
||||
args = { "--style={BasedOnStyle: LLVM, IndentWidth: 4, TabWidth: 4, UseTab: Never, ColumnLimit: 0}" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
88
nvim/lua/plugins/dap.lua
Normal file
88
nvim/lua/plugins/dap.lua
Normal file
@ -0,0 +1,88 @@
|
||||
-- ============================================================================
|
||||
-- DAP 调试器
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
dependencies = {
|
||||
"rcarriga/nvim-dap-ui",
|
||||
"nvim-neotest/nvim-nio",
|
||||
"williamboman/mason.nvim",
|
||||
},
|
||||
config = function()
|
||||
local dap = require("dap")
|
||||
local dapui = require("dapui")
|
||||
|
||||
-- 断点图标
|
||||
vim.fn.sign_define("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = "" })
|
||||
vim.fn.sign_define("DapBreakpointCondition", { text = "◆", texthl = "DapBreakpointCondition", linehl = "", numhl = "" })
|
||||
vim.fn.sign_define("DapStopped", { text = "▶", texthl = "DapStopped", linehl = "CursorLine", numhl = "" })
|
||||
|
||||
-- dap-ui 布局
|
||||
dapui.setup({
|
||||
layouts = {
|
||||
{
|
||||
elements = {
|
||||
{ id = "stacks", size = 0.25 },
|
||||
{ id = "scopes", size = 0.25 },
|
||||
{ id = "breakpoints", size = 0.25 },
|
||||
{ id = "watches", size = 0.25 },
|
||||
},
|
||||
position = "left",
|
||||
size = 40,
|
||||
},
|
||||
{
|
||||
elements = {
|
||||
{ id = "repl", size = 0.5 },
|
||||
{ id = "console", size = 0.5 },
|
||||
},
|
||||
position = "bottom",
|
||||
size = 10,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- 调试会话自动打开/关闭 UI
|
||||
dap.listeners.before.attach.dapui_config = function() dapui.open() end
|
||||
dap.listeners.before.launch.dapui_config = function() dapui.open() end
|
||||
dap.listeners.before.event_terminated.dapui_config = function() dapui.close() end
|
||||
dap.listeners.before.event_exited.dapui_config = function() dapui.close() end
|
||||
|
||||
-- codelldb 适配器(Mason 安装路径)
|
||||
dap.adapters.codelldb = {
|
||||
type = "server",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = vim.fn.stdpath("data") .. "/mason/bin/codelldb",
|
||||
args = { "--port", "${port}" },
|
||||
},
|
||||
}
|
||||
|
||||
-- C/C++ 调试配置(非 CMake 项目,CMake 项目用 <leader>rd)
|
||||
dap.configurations.c = {
|
||||
{
|
||||
name = "Launch",
|
||||
type = "codelldb",
|
||||
request = "launch",
|
||||
program = function()
|
||||
return vim.fn.input("可执行文件路径: ", vim.fn.getcwd() .. "/", "file")
|
||||
end,
|
||||
cwd = "${workspaceFolder}",
|
||||
stopOnEntry = false,
|
||||
args = {},
|
||||
},
|
||||
}
|
||||
dap.configurations.cpp = dap.configurations.c
|
||||
end,
|
||||
},
|
||||
|
||||
-- Mason DAP 自动安装
|
||||
{
|
||||
"jay-babu/mason-nvim-dap.nvim",
|
||||
dependencies = { "williamboman/mason.nvim", "mfussenegger/nvim-dap" },
|
||||
opts = {
|
||||
ensure_installed = { "codelldb" },
|
||||
},
|
||||
},
|
||||
}
|
||||
16
nvim/lua/plugins/devicons.lua
Normal file
16
nvim/lua/plugins/devicons.lua
Normal file
@ -0,0 +1,16 @@
|
||||
-- ============================================================================
|
||||
-- 图标支持 (nvim-web-devicons)
|
||||
-- 为 oil、telescope、状态栏等提供文件类型图标
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
lazy = true,
|
||||
opts = {
|
||||
override = {
|
||||
rs = { icon = "", color = "#dea584", name = "Rust" },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
51
nvim/lua/plugins/gitsigns.lua
Normal file
51
nvim/lua/plugins/gitsigns.lua
Normal file
@ -0,0 +1,51 @@
|
||||
-- ============================================================================
|
||||
-- Git 集成 (gitsigns)
|
||||
-- 行内 diff 标记 + hunk 操作
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
event = "BufReadPre",
|
||||
opts = {
|
||||
signs = {
|
||||
add = { text = "▍" },
|
||||
change = { text = "▍" },
|
||||
delete = { text = "▍" },
|
||||
topdelete = { text = "▍" },
|
||||
changedelete = { text = "▍" },
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
local gs = require("gitsigns")
|
||||
|
||||
-- 导航
|
||||
vim.keymap.set("n", "]h", function() gs.nav_hunk("next") end, { buffer = bufnr, desc = "下一个修改块" })
|
||||
vim.keymap.set("n", "[h", function() gs.nav_hunk("prev") end, { buffer = bufnr, desc = "上一个修改块" })
|
||||
|
||||
-- Hunk 操作
|
||||
vim.keymap.set("n", "<leader>hs", gs.stage_hunk, { buffer = bufnr, desc = "暂存修改块" })
|
||||
vim.keymap.set("n", "<leader>hr", gs.reset_hunk, { buffer = bufnr, desc = "撤销修改块" })
|
||||
vim.keymap.set("n", "<leader>hp", gs.preview_hunk, { buffer = bufnr, desc = "预览修改块" })
|
||||
|
||||
-- 文件操作
|
||||
vim.keymap.set("n", "<leader>hS", gs.stage_buffer, { buffer = bufnr, desc = "暂存文件" })
|
||||
vim.keymap.set("n", "<leader>hR", gs.reset_buffer, { buffer = bufnr, desc = "撤销文件修改" })
|
||||
|
||||
-- Blame
|
||||
vim.keymap.set("n", "<leader>hb", gs.blame_line, { buffer = bufnr, desc = "查看行 blame" })
|
||||
vim.keymap.set("n", "<leader>hl", gs.toggle_current_line_blame, { buffer = bufnr, desc = "切换行 blame" })
|
||||
|
||||
-- 其他
|
||||
vim.keymap.set("n", "<leader>hw", gs.setqflist, { buffer = bufnr, desc = "列出所有 hunk" })
|
||||
vim.keymap.set("n", "<leader>hd", gs.toggle_word_diff, { buffer = bufnr, desc = "切换行内 diff" })
|
||||
end,
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("gitsigns").setup(opts)
|
||||
-- 自定义颜色
|
||||
vim.api.nvim_set_hl(0, "GitSignsAdd", { fg = "#4CAF50" })
|
||||
vim.api.nvim_set_hl(0, "GitSignsChange", { fg = "#2196F3" })
|
||||
vim.api.nvim_set_hl(0, "GitSignsDelete", { fg = "#F44336" })
|
||||
end,
|
||||
},
|
||||
}
|
||||
100
nvim/lua/plugins/lsp.lua
Normal file
100
nvim/lua/plugins/lsp.lua
Normal file
@ -0,0 +1,100 @@
|
||||
-- ============================================================================
|
||||
-- LSP 语言服务器
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
-- Mason: 外部工具管理 (:Mason 打开管理界面)
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
cmd = "Mason",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Mason 与 LSP 桥接,自动安装指定服务器
|
||||
{
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
dependencies = { "williamboman/mason.nvim" },
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"lua_ls", -- Lua
|
||||
"bashls", -- Bash
|
||||
"clangd", -- C/C++
|
||||
"neocmake", -- CMake
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- LSP 配置(Neovim 0.11+ vim.lsp.config API)
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
dependencies = {
|
||||
"williamboman/mason.nvim",
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
"saghen/blink.cmp",
|
||||
},
|
||||
config = function()
|
||||
-- LSP 附加时自动开启 inlay hints
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
callback = function(args)
|
||||
local map = function(keys, func, desc)
|
||||
vim.keymap.set("n", keys, func, { buffer = args.buf, desc = desc })
|
||||
end
|
||||
map("gd", vim.lsp.buf.definition, "跳转到定义")
|
||||
map("gr", vim.lsp.buf.references, "查找引用")
|
||||
map("K", vim.lsp.buf.hover, "悬浮文档")
|
||||
map("<leader>rn", vim.lsp.buf.rename, "重命名")
|
||||
map("<M-CR>", vim.lsp.buf.code_action, "代码操作")
|
||||
map("<leader>d", vim.diagnostic.open_float, "行诊断")
|
||||
map("[d", vim.diagnostic.goto_prev, "上一个诊断")
|
||||
map("]d", vim.diagnostic.goto_next, "下一个诊断")
|
||||
|
||||
-- 开启 inlay hints
|
||||
vim.lsp.inlay_hint.enable(true, { bufnr = args.buf })
|
||||
end,
|
||||
})
|
||||
|
||||
local caps = require("blink.cmp").get_lsp_capabilities()
|
||||
|
||||
-- Lua
|
||||
vim.lsp.config("lua_ls", {
|
||||
cmd = { "lua-language-server" },
|
||||
capabilities = caps,
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = { version = "Lua5.5" },
|
||||
workspace = { checkThirdParty = false },
|
||||
diagnostics = { globals = { "vim" } },
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Bash
|
||||
vim.lsp.config("bashls", {
|
||||
cmd = { "bash-language-server", "start" },
|
||||
capabilities = caps,
|
||||
})
|
||||
|
||||
-- C/C++ (clangd)
|
||||
vim.lsp.config("clangd", {
|
||||
cmd = { "clangd" },
|
||||
capabilities = caps,
|
||||
})
|
||||
|
||||
-- CMake
|
||||
vim.lsp.config("neocmake", {
|
||||
cmd = { "neocmakelsp", "stdio" },
|
||||
filetypes = { "cmake" },
|
||||
root_dir = vim.fs.root(0, { ".git", "CMakeLists.txt" }),
|
||||
single_file_support = true,
|
||||
init_options = {
|
||||
format = { enable = true },
|
||||
lint = { enable = true },
|
||||
},
|
||||
})
|
||||
|
||||
-- 启用所有 LSP(Rust 由 rustaceanvim 管理,不在此启用)
|
||||
vim.lsp.enable({ "lua_ls", "bashls", "clangd", "neocmake" })
|
||||
end,
|
||||
},
|
||||
}
|
||||
36
nvim/lua/plugins/oil.lua
Normal file
36
nvim/lua/plugins/oil.lua
Normal file
@ -0,0 +1,36 @@
|
||||
-- ============================================================================
|
||||
-- 文件浏览器 (oil.nvim)
|
||||
-- 缓冲区编辑模式,像编辑文本一样管理文件
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"stevearc/oil.nvim",
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
opts = {
|
||||
default_file_explorer = true,
|
||||
keymaps = {
|
||||
["<CR>"] = "actions.select",
|
||||
["<C-p>"] = "actions.preview",
|
||||
["<C-c>"] = "actions.close",
|
||||
["<C-r>"] = "actions.refresh",
|
||||
["<C-h>"] = "actions.toggle_hidden",
|
||||
["g?"] = "actions.show_help",
|
||||
},
|
||||
view_options = {
|
||||
show_hidden = true,
|
||||
},
|
||||
float = {
|
||||
padding = 2,
|
||||
max_width = 90,
|
||||
border = "rounded",
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ "-", "<cmd>Oil<cr>", desc = "打开父目录" },
|
||||
{ "<leader>fe", "<cmd>Oil<cr>", desc = "文件浏览器" },
|
||||
},
|
||||
},
|
||||
}
|
||||
25
nvim/lua/plugins/runner.lua
Normal file
25
nvim/lua/plugins/runner.lua
Normal file
@ -0,0 +1,25 @@
|
||||
-- ============================================================================
|
||||
-- 统一构建/运行/调试键位
|
||||
-- 所有语言共用同一组键位,由 runner.lua 自动分发
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
keys = {
|
||||
-- 调试控制
|
||||
{ "<F5>", function() require("dap").continue() end, desc = "继续调试" },
|
||||
{ "<F10>", function() require("dap").step_over() end, desc = "单步跳过" },
|
||||
{ "<F11>", function() require("dap").step_into() end, desc = "单步进入" },
|
||||
{ "<F12>", function() require("dap").step_out() end, desc = "单步跳出" },
|
||||
{ "<leader>b", function() require("dap").toggle_breakpoint() end, desc = "断点" },
|
||||
{ "<leader>du", function() require("dapui").toggle() end, desc = "调试界面" },
|
||||
|
||||
-- 统一构建/运行/调试/测试
|
||||
{ "<leader>rb", function() require("runner").build() end, desc = "构建" },
|
||||
{ "<leader>rr", function() require("runner").run() end, desc = "运行" },
|
||||
{ "<leader>rd", function() require("runner").debug() end, desc = "调试" },
|
||||
{ "<leader>rt", function() require("runner").test() end, desc = "测试" },
|
||||
},
|
||||
},
|
||||
}
|
||||
35
nvim/lua/plugins/rustaceanvim.lua
Normal file
35
nvim/lua/plugins/rustaceanvim.lua
Normal file
@ -0,0 +1,35 @@
|
||||
-- ============================================================================
|
||||
-- Rust 工具 (rustaceanvim)
|
||||
-- Rust 全流程:LSP、调试、运行、测试、宏展开
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"mrcjkb/rustaceanvim",
|
||||
version = "^6",
|
||||
lazy = false,
|
||||
ft = { "rust" },
|
||||
config = function()
|
||||
vim.g.rustaceanvim = {
|
||||
-- LSP 配置
|
||||
server = {
|
||||
default_settings = {
|
||||
["rust-analyzer"] = {
|
||||
cargo = { allFeatures = true },
|
||||
check = { command = "clippy" },
|
||||
},
|
||||
},
|
||||
},
|
||||
-- DAP 适配器(复用 Mason 安装的 codelldb)
|
||||
dap = {
|
||||
adapter = function()
|
||||
local codelldb_path = vim.fn.stdpath("data") .. "/mason/bin/codelldb"
|
||||
local library_path = vim.fn.stdpath("data")
|
||||
.. "/mason/packages/codelldb/extension/lldb/lib/liblldb.so"
|
||||
return require("rustaceanvim.config").get_codelldb_adapter(codelldb_path, library_path)
|
||||
end,
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
40
nvim/lua/plugins/telescope.lua
Normal file
40
nvim/lua/plugins/telescope.lua
Normal file
@ -0,0 +1,40 @@
|
||||
-- ============================================================================
|
||||
-- 模糊搜索 (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 = "最近文件" },
|
||||
},
|
||||
opts = {
|
||||
defaults = {
|
||||
prompt_prefix = " > ",
|
||||
selection_caret = " > ",
|
||||
layout_strategy = "flex",
|
||||
},
|
||||
extensions = {
|
||||
["ui-select"] = {
|
||||
require("telescope.themes").get_dropdown({}),
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
local telescope = require("telescope")
|
||||
telescope.setup(opts)
|
||||
telescope.load_extension("ui-select")
|
||||
end,
|
||||
},
|
||||
}
|
||||
31
nvim/lua/plugins/treesitter.lua
Normal file
31
nvim/lua/plugins/treesitter.lua
Normal file
@ -0,0 +1,31 @@
|
||||
-- ============================================================================
|
||||
-- 语法高亮 (Tree-sitter)
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
build = ":TSUpdate",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"lua", -- Lua
|
||||
"bash", -- Bash
|
||||
"rust", -- Rust
|
||||
"c", -- C
|
||||
"cpp", -- C++
|
||||
"cmake", -- CMake
|
||||
"python", -- Python
|
||||
"java", -- Java
|
||||
"go", -- Go
|
||||
"json", -- JSON
|
||||
"toml", -- TOML
|
||||
"markdown", -- Markdown
|
||||
"regex", -- 正则
|
||||
"vim", -- Vimscript
|
||||
},
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
},
|
||||
},
|
||||
}
|
||||
16
nvim/lua/plugins/whichkey.lua
Normal file
16
nvim/lua/plugins/whichkey.lua
Normal file
@ -0,0 +1,16 @@
|
||||
-- ============================================================================
|
||||
-- 键位提示 (which-key)
|
||||
-- ============================================================================
|
||||
|
||||
return {
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
enabled = false,
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
delay = 300,
|
||||
icons = { breadcrumb = ">", separator = "->", group = "+" },
|
||||
spec = { { "z", hidden = true } },
|
||||
},
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user