My simple neovim config
1return {
2 -- Git
3 {
4 "tpope/vim-fugitive",
5 cmd = "Git",
6 keys = {
7 { "<leader>gg", vim.cmd.Git, desc = "Open vim-fugitive" },
8 },
9 },
10 {
11 "lewis6991/gitsigns.nvim",
12 lazy = true,
13 event = "BufReadPre",
14 opts = {
15 on_attach = function(bufnr)
16 local signs = require("gitsigns")
17 local function map(mode, l, r, opts)
18 opts = opts or {}
19 opts.buffer = bufnr
20 if type(mode) == "table" then
21 for _, m in ipairs(mode) do
22 vim.keymap.set(m, l, r, opts)
23 end
24 else
25 vim.keymap.set(mode, l, r, opts)
26 end
27 end
28 map({ "v", "n" }, "<leader>gsh", function()
29 signs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
30 end, { desc = "Stage hunk" })
31 map("n", "<leader>gsb", signs.stage_buffer, { desc = "Stage buffer" })
32 map({ "v", "n" }, "<leader>gsr", function()
33 require("gitsigns").reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
34 end, { desc = "Reset hunk" })
35 map("n", "<leader>gb", signs.blame_line, { desc = "Blame Line" })
36 end,
37 current_line_blame = true,
38 current_line_blame_opts = {
39 delay = "250",
40 },
41 },
42 },
43}