update dotfiles
This commit is contained in:
@@ -1,9 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- init.lua — Neovim 入口文件
|
||||
-- =============================================================================
|
||||
-- 【结构变更】原 init.lua 中 options + keymaps + lazy 全部内联,
|
||||
-- 现拆分为 config/options.lua + config/keymaps.lua + config/lazy.lua 三层,
|
||||
-- 更利于 :Lazy reload 和后续维护。
|
||||
require("config.options")
|
||||
require("config.keymaps")
|
||||
require("config.lazy")
|
||||
|
||||
+107
-35
@@ -2,7 +2,7 @@
|
||||
-- keymaps.lua — 基础键位映射
|
||||
-- =============================================================================
|
||||
|
||||
local keymap = vim.keymap.set
|
||||
local keymap = vim.keymap.set
|
||||
|
||||
-- Leader 键
|
||||
vim.g.mapleader = " "
|
||||
@@ -12,41 +12,58 @@ vim.g.maplocalleader = " "
|
||||
keymap("n", "<leader>w", "<cmd>w<cr>", { desc = "保存" })
|
||||
|
||||
-- 关闭当前 buffer / 窗口(VSCode 风格)
|
||||
-- - quickfix 窗口:cclose(cmake-tools 输出窗口)
|
||||
-- - 普通文件:统计文件 buffer 数量
|
||||
-- - 只剩 1 个文件 buffer → 退出 nvim(不留下 "no name" 空白)
|
||||
-- - 多个文件 buffer → Bdelete 关闭当前标签
|
||||
-- - 其他特殊 buffer(终端等):直接关闭窗口
|
||||
keymap("n", "<leader>q", function()
|
||||
local bt = vim.bo.buftype
|
||||
local ft = vim.bo.filetype
|
||||
local bt = vim.bo.buftype
|
||||
local ft = vim.bo.filetype
|
||||
|
||||
if bt == "quickfix" then
|
||||
vim.cmd("cclose")
|
||||
return
|
||||
end
|
||||
|
||||
if bt ~= "" then
|
||||
vim.cmd("close")
|
||||
return
|
||||
end
|
||||
|
||||
-- 统计文件 buffer 数量(排除 nvim-tree/dashboard/quickfix/terminal 等)
|
||||
local file_bufs = 0
|
||||
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_loaded(bufnr) then
|
||||
local b = vim.bo[bufnr]
|
||||
if b.buftype == "" and b.filetype ~= "" then
|
||||
file_bufs = file_bufs + 1
|
||||
end
|
||||
-- 统计文件 buffer 数量
|
||||
local file_bufs = 0
|
||||
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_loaded(bufnr) then
|
||||
local b = vim.bo[bufnr]
|
||||
if b.buftype == "" and b.filetype ~= "" and b.filetype ~= "NvimTree" and b.filetype ~= "dashboard" then
|
||||
file_bufs = file_bufs + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if file_bufs <= 1 then
|
||||
vim.cmd("qa")
|
||||
else
|
||||
vim.cmd("Bdelete")
|
||||
end
|
||||
-- dashboard:无文件直接退出
|
||||
if ft == "dashboard" then
|
||||
vim.cmd("qa")
|
||||
return
|
||||
end
|
||||
|
||||
-- nvim-tree:有文件关闭树,无文件退出
|
||||
if ft == "NvimTree" then
|
||||
if file_bufs == 0 then
|
||||
vim.cmd("qa")
|
||||
else
|
||||
vim.cmd("NvimTreeClose")
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
-- quickfix:cclose
|
||||
if bt == "quickfix" then
|
||||
vim.cmd("cclose")
|
||||
return
|
||||
end
|
||||
|
||||
-- 其他特殊 buffer:关闭窗口(失败则退出)
|
||||
if bt ~= "" then
|
||||
local ok = pcall(vim.cmd, "close")
|
||||
if not ok then
|
||||
vim.cmd("qa")
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
-- 普通文件:根据数量决定退出或关闭
|
||||
if file_bufs <= 1 then
|
||||
vim.cmd("qa")
|
||||
else
|
||||
vim.cmd("Bdelete")
|
||||
end
|
||||
end, { desc = "关闭当前 buffer/窗口" })
|
||||
|
||||
keymap("n", "<leader>/", "<cmd>noh<cr>", { desc = "清除搜索高亮" })
|
||||
@@ -63,12 +80,67 @@ keymap("n", "<leader>sh", "<cmd>split<cr>", { desc = "水平分屏" })
|
||||
keymap("n", "<leader>sc", "<cmd>close<cr>", { desc = "关闭窗口" })
|
||||
|
||||
-- Buffer 导航
|
||||
keymap("n", "<S-h>", "<cmd>bnext<cr>", { desc = "下一个 buffer" })
|
||||
keymap("n", "<S-l>", "<cmd>bprevious<cr>", { desc = "上一个 buffer" })
|
||||
keymap("n", "<S-h>", "<cmd>bprevious<cr>", { desc = "下一个 buffer" })
|
||||
keymap("n", "<S-l>", "<cmd>bnext<cr>", { desc = "上一个 buffer" })
|
||||
|
||||
-- Buffer 操作
|
||||
keymap("n", "<leader>bc", "<cmd>Bdelete<cr>", { desc = "关闭当前 buffer" })
|
||||
keymap("n", "<leader>bs", "<cmd>wall<cr>", { desc = "保存全部" })
|
||||
keymap("n", "<leader>bo", function()
|
||||
local current = vim.api.nvim_get_current_buf()
|
||||
local special_ft = { NvimTree = true, dashboard = true, [""] = true }
|
||||
|
||||
-- 检查是否有未保存的文件 buffer
|
||||
local unsaved = {}
|
||||
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_loaded(bufnr) then
|
||||
local ft = vim.bo[bufnr].filetype
|
||||
local bt = vim.bo[bufnr].buftype
|
||||
-- 只统计普通文件 buffer
|
||||
if bt == "" and not special_ft[ft] and bufnr ~= current then
|
||||
if vim.bo[bufnr].modified then
|
||||
table.insert(unsaved, bufnr)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function close_others(force)
|
||||
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_loaded(bufnr) and bufnr ~= current then
|
||||
local ft = vim.bo[bufnr].filetype
|
||||
local bt = vim.bo[bufnr].buftype
|
||||
-- 只关闭普通文件 buffer,保留 nvim-tree/dashboard 等
|
||||
if bt == "" and not special_ft[ft] then
|
||||
vim.api.nvim_buf_delete(bufnr, { force = force })
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if #unsaved > 0 then
|
||||
vim.ui.select({ "保存全部", "强制关闭(不保存)", "取消" }, { prompt = "有 " .. #unsaved .. " 个未保存的 buffer" }, function(choice)
|
||||
if not choice then return end
|
||||
if choice == "保存全部" then
|
||||
for _, bufnr in ipairs(unsaved) do
|
||||
vim.api.nvim_buf_call(bufnr, function()
|
||||
vim.cmd("write")
|
||||
end)
|
||||
end
|
||||
close_others(false)
|
||||
elseif choice == "强制关闭(不保存)" then
|
||||
close_others(true)
|
||||
end
|
||||
end)
|
||||
else
|
||||
close_others(false)
|
||||
end
|
||||
end, { desc = "关闭其他 buffer" })
|
||||
|
||||
-- 文件树
|
||||
keymap("n", "<leader>e", "<cmd>NvimTreeToggle<cr>", { desc = "文件树" })
|
||||
|
||||
-- 终端
|
||||
keymap("n", "<c-`>", "<cmd>ToggleTerm<cr>", { desc = "终端" })
|
||||
keymap("t", "<c-`>", "<cmd>ToggleTerm<cr>", { desc = "终端" })
|
||||
keymap("t", "<c-`>", "<cmd>ToggleTerm<cr>", { desc = "终端" })
|
||||
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- lazy.lua — 插件管理器初始化
|
||||
-- =============================================================================
|
||||
-- 【来源】从原 init.lua 提取。
|
||||
-- 【修改】🔧 install.colorscheme 改为 tokyonight(你的主题);
|
||||
-- 🔧 添加 ui.border = "rounded" 统一圆角;
|
||||
-- 🔧 添加 performance.rtp 禁用内置插件提升启动速度。
|
||||
-- 【修复】🔧 defaults.lazy = true(保留你的原设置),但 UI 核心插件不懒加载。
|
||||
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.uv.fs_stat(lazypath) then
|
||||
@@ -22,28 +17,28 @@ require("lazy").setup({
|
||||
{ import = "plugins" },
|
||||
},
|
||||
|
||||
-- 🔧 修复:保留你的 defaults.lazy = true
|
||||
-- 默认延迟加载插件
|
||||
defaults = {
|
||||
lazy = true,
|
||||
},
|
||||
|
||||
-- 🔧 修改:安装时尝试加载你的主题
|
||||
-- 安装时尝试加载的主题
|
||||
install = {
|
||||
colorscheme = { "tokyonight", "habamax" },
|
||||
},
|
||||
|
||||
-- 🔧 修改:关闭自动检查更新(你的原设置),但保留手动 :Lazy check
|
||||
-- 关闭自动检查更新(手动 :Lazy check)
|
||||
checker = {
|
||||
enabled = false,
|
||||
notify = false,
|
||||
},
|
||||
|
||||
-- 🔧 修改:统一 UI 圆角边框
|
||||
-- 统一 UI 圆角边框
|
||||
ui = {
|
||||
border = "rounded",
|
||||
},
|
||||
|
||||
-- ✅ 新增:禁用内置插件提升启动速度
|
||||
-- 禁用内置插件提升启动速度
|
||||
performance = {
|
||||
rtp = {
|
||||
disabled_plugins = {
|
||||
|
||||
+20
-23
@@ -1,8 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- options.lua — 编辑器基础选项
|
||||
-- =============================================================================
|
||||
-- 【来源】从原 init.lua 提取,补充了参考配置中缺失的选项。
|
||||
-- 【新增项】已用 ✅ 标注,【修改项】已用 🔧 标注。
|
||||
|
||||
local opt = vim.opt
|
||||
|
||||
@@ -10,15 +8,15 @@ local opt = vim.opt
|
||||
-- 行号
|
||||
-- ─────────────────────────────────────────────
|
||||
opt.number = true -- 当前行绝对行号
|
||||
opt.relativenumber = true -- 相对行号(保留你的设置,方便 5j/5k 跳转)
|
||||
opt.relativenumber = true -- 相对行号
|
||||
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 缩进
|
||||
-- ─────────────────────────────────────────────
|
||||
opt.tabstop = 4 -- Tab 宽度 4(保留你的设置,适配 C/C++)
|
||||
opt.shiftwidth = 4 -- 缩进宽度 4
|
||||
opt.tabstop = 4 -- Tab 宽度
|
||||
opt.shiftwidth = 4 -- 缩进宽度
|
||||
opt.expandtab = true -- Tab 转空格
|
||||
opt.autoindent = true -- ✅ 新增:新行继承上一行缩进
|
||||
opt.autoindent = true -- 新行继承上一行缩进
|
||||
opt.smartindent = true -- 智能缩进
|
||||
|
||||
-- ─────────────────────────────────────────────
|
||||
@@ -26,8 +24,8 @@ opt.smartindent = true -- 智能缩进
|
||||
-- ─────────────────────────────────────────────
|
||||
opt.ignorecase = true -- 搜索忽略大小写
|
||||
opt.smartcase = true -- 含大写字母时区分大小写
|
||||
opt.hlsearch = true -- ✅ 新增:高亮搜索匹配
|
||||
opt.incsearch = true -- ✅ 新增:实时预览搜索
|
||||
opt.hlsearch = true -- 高亮搜索匹配
|
||||
opt.incsearch = true -- 实时预览搜索
|
||||
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 显示 & 界面
|
||||
@@ -36,11 +34,11 @@ opt.termguicolors = true -- 真彩色
|
||||
opt.cursorline = true -- 高亮当前行
|
||||
opt.signcolumn = "yes" -- 始终显示符号列
|
||||
opt.wrap = false -- 不自动换行
|
||||
opt.scrolloff = 8 -- ✅ 新增:光标距上下边缘保持 8 行
|
||||
opt.sidescrolloff = 8 -- ✅ 新增:光标距左右边缘保持 8 列
|
||||
opt.showmode = false -- ✅ 新增:隐藏 --INSERT--(状态栏会显示)
|
||||
opt.scrolloff = 8 -- 光标距上下边缘保持 8 行
|
||||
opt.sidescrolloff = 8 -- 光标距左右边缘保持 8 列
|
||||
opt.showmode = false -- 隐藏模式提示(状态栏会显示)
|
||||
opt.pumheight = 10 -- 补全菜单最大高度
|
||||
opt.winborder = "rounded" -- 全局浮动窗口圆角(保留你的设置)
|
||||
opt.winborder = "rounded" -- 全局浮动窗口圆角
|
||||
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 分割窗口
|
||||
@@ -51,16 +49,16 @@ opt.splitbelow = true -- 水平分割在下方
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 文件 & 编码
|
||||
-- ─────────────────────────────────────────────
|
||||
opt.encoding = "utf-8" -- ✅ 新增:显式指定 UTF-8
|
||||
opt.fileencoding = "utf-8" -- ✅ 新增
|
||||
opt.swapfile = false -- ✅ 新增:关闭交换文件
|
||||
opt.backup = false -- ✅ 新增:关闭备份文件
|
||||
opt.encoding = "utf-8" -- 文件编码
|
||||
opt.fileencoding = "utf-8"
|
||||
opt.swapfile = false -- 关闭交换文件
|
||||
opt.backup = false -- 关闭备份文件
|
||||
opt.undofile = true -- 持久化撤销
|
||||
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 鼠标 & 剪贴板
|
||||
-- ─────────────────────────────────────────────
|
||||
opt.mouse = "a" -- ✅ 新增:所有模式启用鼠标
|
||||
opt.mouse = "a" -- 所有模式启用鼠标
|
||||
opt.clipboard = "unnamedplus" -- 系统剪贴板
|
||||
|
||||
-- ─────────────────────────────────────────────
|
||||
@@ -74,18 +72,17 @@ opt.wildmode = "longest:full,full"
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 补全
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 🔧 修改:completeopt 改为 blink.cmp 推荐的配置
|
||||
opt.completeopt = { "menuone", "noselect" }
|
||||
opt.completeopt = { "menuone", "noselect" } -- blink.cmp 推荐配置
|
||||
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 折叠(为 nvim-ufo 准备)
|
||||
-- ─────────────────────────────────────────────
|
||||
opt.foldlevel = 99
|
||||
opt.foldlevelstart = 99 -- ✅ 新增:启动时展开所有折叠
|
||||
opt.foldenable = true -- ✅ 新增:启用折叠
|
||||
opt.foldlevelstart = 99 -- 启动时展开所有折叠
|
||||
opt.foldenable = true -- 启用折叠
|
||||
|
||||
-- ─────────────────────────────────────────────
|
||||
-- 其他
|
||||
-- ─────────────────────────────────────────────
|
||||
opt.conceallevel = 0 -- ✅ 新增:不隐藏特殊字符
|
||||
opt.isfname:append("@-@") -- ✅ 新增:文件名识别 @ 符号
|
||||
opt.conceallevel = 0 -- 不隐藏特殊字符
|
||||
opt.isfname:append("@-@") -- 文件名识别 @ 符号
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
-- =============================================================================
|
||||
-- autopairs.lua — 自动括号补全
|
||||
-- =============================================================================
|
||||
-- 【保留】你的配置。
|
||||
-- 【修改】🔧 添加 check_ts = true 让括号补全感知 Treesitter 语法。
|
||||
|
||||
return {
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
opts = {
|
||||
check_ts = true, -- 🔧 新增:Treesitter 感知,避免在字符串/注释里自动配对
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
opts = {
|
||||
check_ts = true, -- Treesitter 感知,避免在字符串/注释里自动配对
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- cmake-tools.lua — CMake 工具
|
||||
-- =============================================================================
|
||||
-- 【保留】你的完整 cmake-tools 配置。
|
||||
-- 【无修改】不改动任何已有逻辑。
|
||||
|
||||
return {
|
||||
{
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- conform.lua — 自动格式化
|
||||
-- =============================================================================
|
||||
-- 【保留】你的完整 conform 配置。
|
||||
-- 【修改】🔧 键位从 <leader>cf 改为 <leader>lf(与 LSP 格式化键统一);
|
||||
-- ✅ 新增更多语言的 formatter。
|
||||
|
||||
return {
|
||||
{
|
||||
@@ -11,7 +8,6 @@ return {
|
||||
event = { "BufWritePre" },
|
||||
cmd = { "ConformInfo" },
|
||||
keys = {
|
||||
-- 🔧 修改:<leader>cf → <leader>lf,与 keymaps.lua 中的 LSP 格式化键一致
|
||||
{ "<leader>lf", function() require("conform").format({ async = true, lsp_fallback = true }) end, desc = "格式化" },
|
||||
},
|
||||
opts = {
|
||||
@@ -24,7 +20,6 @@ return {
|
||||
lua = { "stylua" },
|
||||
c = { "clang-format" },
|
||||
cpp = { "clang-format" },
|
||||
-- ✅ 新增:更多语言
|
||||
python = { "black", "isort" },
|
||||
javascript = { "prettier" },
|
||||
typescript = { "prettier" },
|
||||
|
||||
+73
-75
@@ -1,91 +1,89 @@
|
||||
-- =============================================================================
|
||||
-- git.lua — Git 集成
|
||||
-- =============================================================================
|
||||
-- 【保留】你的 gitsigns + diffview 配置完整保留。
|
||||
-- 【新增】✅ lazygit 集成(参考配置有,你缺的)。
|
||||
|
||||
return {
|
||||
|
||||
-- gitsigns: 行内 diff 标记
|
||||
{
|
||||
"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")
|
||||
-- gitsigns: 行内 diff 标记
|
||||
{
|
||||
"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 = "上一个修改块" })
|
||||
-- 导航
|
||||
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 = "预览修改块" })
|
||||
-- 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 = "撤销文件修改" })
|
||||
-- 文件操作
|
||||
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" })
|
||||
-- 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,
|
||||
},
|
||||
|
||||
-- diffview: Git diff 视图
|
||||
{
|
||||
"sindrets/diffview.nvim",
|
||||
cmd = "DiffviewOpen",
|
||||
keys = {
|
||||
{ "<leader>go", "<cmd>DiffviewOpen<cr>", desc = "查看改动" },
|
||||
{ "<leader>gq", "<cmd>DiffviewClose<cr>", desc = "关闭 diff" },
|
||||
{ "<leader>gl", "<cmd>DiffviewFileHistory %<cr>", desc = "文件历史" },
|
||||
},
|
||||
opts = {
|
||||
file_panel = {
|
||||
listing_style = "tree",
|
||||
tree_options = {
|
||||
flatten_dirs = true,
|
||||
folder_statuses = "only_folded",
|
||||
-- 其他
|
||||
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,
|
||||
},
|
||||
},
|
||||
keymaps = {
|
||||
view = {
|
||||
{ "n", "<leader>q", "<cmd>DiffviewClose<cr>", { desc = "关闭 diffview" } },
|
||||
},
|
||||
file_panel = {
|
||||
{ "n", "<leader>q", "<cmd>DiffviewClose<cr>", { desc = "关闭 diffview" } },
|
||||
},
|
||||
},
|
||||
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,
|
||||
},
|
||||
},
|
||||
|
||||
-- ✅ 新增:lazygit 集成
|
||||
{
|
||||
"kdheepak/lazygit.nvim",
|
||||
cmd = { "LazyGit", "LazyGitCurrentFile" },
|
||||
keys = {
|
||||
{ "<leader>gg", ":LazyGit<CR>", desc = "LazyGit" },
|
||||
-- diffview: Git diff 视图
|
||||
{
|
||||
"sindrets/diffview.nvim",
|
||||
cmd = "DiffviewOpen",
|
||||
keys = {
|
||||
{ "<leader>go", "<cmd>DiffviewOpen<cr>", desc = "查看改动" },
|
||||
{ "<leader>gq", "<cmd>DiffviewClose<cr>", desc = "关闭 diff" },
|
||||
{ "<leader>gl", "<cmd>DiffviewFileHistory %<cr>", desc = "文件历史" },
|
||||
},
|
||||
opts = {
|
||||
file_panel = {
|
||||
listing_style = "tree",
|
||||
tree_options = {
|
||||
flatten_dirs = true,
|
||||
folder_statuses = "only_folded",
|
||||
},
|
||||
},
|
||||
keymaps = {
|
||||
view = {
|
||||
{ "n", "<leader>q", "<cmd>DiffviewClose<cr>", { desc = "关闭 diffview" } },
|
||||
},
|
||||
file_panel = {
|
||||
{ "n", "<leader>q", "<cmd>DiffviewClose<cr>", { desc = "关闭 diffview" } },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- lazygit: Git TUI
|
||||
{
|
||||
"kdheepak/lazygit.nvim",
|
||||
cmd = { "LazyGit", "LazyGitCurrentFile" },
|
||||
keys = {
|
||||
{ "<leader>gg", ":LazyGit<CR>", desc = "LazyGit" },
|
||||
},
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
},
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- oil.lua — 文件浏览器
|
||||
-- =============================================================================
|
||||
-- 【保留】你的完整 oil.nvim 配置。
|
||||
-- 【无修改】oil 作为默认文件浏览器不变。
|
||||
|
||||
return {
|
||||
{
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- runner.lua — 统一构建/运行/调试分发器
|
||||
-- =============================================================================
|
||||
-- 【保留】你的 runner.lua 配置和 keymap 完整保留。
|
||||
-- 【无修改】这是你的优秀设计,不需要改动。
|
||||
|
||||
return {
|
||||
{
|
||||
@@ -13,7 +11,7 @@ return {
|
||||
{ "<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 改为 <leader>db(避免与 buffer 分组冲突)
|
||||
-- 断点键位(避免与 buffer 分组冲突)
|
||||
{ "<leader>db", function() require("dap").toggle_breakpoint() end, desc = "断点" },
|
||||
{ "<leader>du", function() require("dapui").toggle() end, desc = "调试界面" },
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- treesitter.lua — 语法高亮
|
||||
-- treesitter.lua — 语法高亮与折叠
|
||||
-- =============================================================================
|
||||
-- 【保留】你的完整 ensure_installed 列表。
|
||||
-- 【新增】✅ fold 配置让 nvim-ufo 可以使用 treesitter 折叠。
|
||||
|
||||
return {
|
||||
{
|
||||
@@ -17,8 +15,7 @@ return {
|
||||
},
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
-- ✅ 新增:启用 treesitter 折叠(nvim-ufo 依赖)
|
||||
fold = { enable = true },
|
||||
fold = { enable = true }, -- nvim-ufo 依赖
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- whichkey.lua — 键位提示
|
||||
-- =============================================================================
|
||||
-- 【修复】原配置 enabled = false 直接禁用了,现在启用。
|
||||
-- 【修改】🔧 enabled 改为 true;
|
||||
-- 🔧 更完善的分组和图标配置。
|
||||
|
||||
return {
|
||||
{
|
||||
@@ -39,7 +36,7 @@ return {
|
||||
local wk = require("which-key")
|
||||
wk.setup(opts)
|
||||
|
||||
-- ✅ 新增:键位分组提示
|
||||
-- 键位分组提示
|
||||
wk.add({
|
||||
{ "<leader>e", group = "文件树" },
|
||||
{ "<leader>f", group = "搜索" },
|
||||
|
||||
+2
-3
@@ -1,8 +1,6 @@
|
||||
-- =============================================================================
|
||||
-- runner.lua — 统一构建/运行/调试分发器
|
||||
-- =============================================================================
|
||||
-- 【保留】你的完整 runner.lua 模块。
|
||||
-- 【修改】使用 quickfix 窗口显示输出,与 CMake 保持一致
|
||||
|
||||
local M = {}
|
||||
|
||||
@@ -127,4 +125,5 @@ function M.test()
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
return M
|
||||
|
||||
|
||||
Reference in New Issue
Block a user