require("gitsigns").setup({ preview_config = { border = "single", }, on_attach = function(bufnr) local gs = require("gitsigns") vim.keymap.set( "n", "gv", gs.select_hunk, { buffer = bufnr } ) vim.keymap.set("n", "gs", gs.stage_hunk, { buffer = bufnr }) vim.keymap.set("x", "gs", function() gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { buffer = bufnr }) vim.keymap.set("n", "gr", gs.reset_hunk, { buffer = bufnr }) vim.keymap.set( "x", "gr", ":Gitsigns reset_hunk", { buffer = bufnr } ) vim.keymap.set( "n", "g?", gs.preview_hunk, { buffer = bufnr } ) vim.keymap.set("n", "gb", function() gs.blame_line({ full = true, ignore_whitespace = true }) end, { buffer = bufnr }) vim.keymap.set({ "n", "x" }, "]g", function() gs.nav_hunk("next", { wrap = true, foldopen = true, navigation_message = true, greedy = true, preview = true, count = 1, target = "all", }) end) vim.keymap.set({ "n", "x" }, "[g", function() gs.nav_hunk("prev", { wrap = true, foldopen = true, navigation_message = true, greedy = true, preview = true, count = 1, target = "all", }) end) end, attach_to_untracked = false, sign_priority = 100, })