初始化dotfiles
This commit is contained in:
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,
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user