-- leader vim.g.mapleader = " " -- visual block indenting vim.keymap.set("v", "<", "", ">gv") -- centered cursor vim.keymap.set("n", "n", "nzz") vim.keymap.set("n", "N", "Nzz") vim.keymap.set("n", "J", "mzJ`z") -- escape terminal mode vim.keymap.set("t", "", "") -- movement vim.keymap.set("n", "", "wincmd h", { desc = "Move Left" }) vim.keymap.set("n", "", "wincmd j", { desc = "Move Down" }) vim.keymap.set("n", "", "wincmd k", { desc = "Move Up" }) vim.keymap.set("n", "", "wincmd l", { desc = "Move Right" }) -- terminal vim.keymap.set("t", "", "wincmd h", { desc = "Move Left" }) vim.keymap.set("t", "", "wincmd j", { desc = "Move Down" }) vim.keymap.set("t", "", "wincmd k", { desc = "Move Up" }) vim.keymap.set("t", "", "wincmd l", { desc = "Move Right" }) -- basics vim.keymap.set("n", "f", "Telescope find_files", { desc = "Find Files" }) vim.keymap.set("n", "F", "NvimTreeToggle", { desc = "Toggle File Manager" }) vim.keymap.set("n", "b", "Telescope buffers", { desc = "Buffers" }) -- toggle term vim.keymap.set("n", "c", "ToggleTermToggleAll", { desc = "Toggle All Terminals" }) vim.keymap.set("n", "", "ToggleTermToggleAll", { desc = "Toggle All Terminal" }) vim.keymap.set("t", "", "ToggleTermToggleAll", { desc = "Toggle All Terminal" }) -- vim.keymap.set("n", "C", "ToggleTerm") vim.keymap.set("n", "C", ":ToggleTerm", { desc = "Toggle Terminal" }) -- frequent actions vim.keymap.set("n", "ac", "Telescope find_files cwd=~/.config/nvim", { desc = "Find Config Files" }) vim.keymap.set("n", "an", "NoNeckPain", { desc = "No Neck Pain" }) vim.keymap.set("n", "ag", "Neogit", { desc = "Neogit" }) vim.keymap.set("n", "am", function() require("maximize").toggle() end, { desc = "Maximize" }) vim.keymap.set("n", "ar", function() require("gitlab").review() end, { desc = "Gitlab Review" }) -- telescope vim.keymap.set("n", "tt", "Telescope", { desc = "Telescope" }) vim.keymap.set("n", "tw", "Telescope lsp_dynamic_workspace_symbols", { desc = "Workspace Symbols" }) vim.keymap.set("n", "to", "Telescope oldfiles", { desc = "Old Files" }) vim.keymap.set("n", "tg", "Telescope live_grep", { desc = "Grep" }) vim.keymap.set("n", "ts", "Telescope treesitter", { desc = "Tree Sitter" }) vim.keymap.set("n", "td", "Telescope lsp_document_symbols", { desc = "Document Symbols" }) -- dev vim.keymap.set("n", "gd", "Telescope lsp_definitions", { desc = "Go To Definition" }) vim.keymap.set("n", "gi", "Telescope lsp_implementations", { desc = "Go To Implementations" }) vim.keymap.set("n", "gr", "Telescope lsp_references", { desc = "Go To References" }) vim.keymap.set("n", "gq", "Telescope diagnostics", { desc = "Show Diagnostics" }) vim.keymap.set("n", "gs", "LspRestart", { desc = "Restart LSP" }) vim.keymap.set("n", "gf", "Format", { desc = "Format" }) vim.keymap.set("n", "ge", "Trouble diagnostics", { desc = "Toggle Trouble" }) vim.keymap.set("n", "ga", function() vim.lsp.buf.code_action() end, { desc = "Code Actions" }) vim.keymap.set("n", "gD", function() vim.lsp.buf.declaration() end, { desc = "Go To Declaration" }) vim.keymap.set("n", "gk", function() vim.lsp.buf.hover() end, { desc = "Hover" }) vim.keymap.set("n", "gt", function() vim.lsp.buf.type_definition() end, { desc = "Go To Type Definition" }) vim.keymap.set("n", "gn", function() vim.lsp.buf.rename() end, { desc = "Rename" }) -- vcs vim.keymap.set("n", "vs", function() require("gitsigns").stage_hunk() end, { desc = "Stage Hunk" }) vim.keymap.set("n", "vr", function() require("gitsigns").reset_hunk() end, { desc = "Reset Hunk" }) vim.keymap.set("v", "vs", function() require("gitsigns").stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "Stage Hunk" }) vim.keymap.set("v", "vr", function() require("gitsigns").reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "Reset Hunk" }) vim.keymap.set("n", "va", function() require("gitsigns").stage_buffer() end, { desc = "Stage Buffer" }) vim.keymap.set("n", "vu", function() require("gitsigns").undo_stage_hunk() end, { desc = "Undo Stage Hunk" }) vim.keymap.set("n", "vx", function() require("gitsigns").reset_buffer() end, { desc = "Reset Buffer" }) vim.keymap.set("n", "vp", function() require("gitsigns").preview_hunk() end, { desc = "Preview Hunk" }) vim.keymap.set("n", "vb", function() require("gitsigns").blame_line({ full = true }) end, { desc = "Blame Line" }) vim.keymap.set("n", "vB", function() require("gitsigns").toggle_current_line_blame() end, { desc = "Toggle Blame" }) vim.keymap.set("n", "vt", function() require("gitsigns").toggle_deleted() end, { desc = "Toggle Deleted" }) vim.keymap.set("n", "vd", "DiffviewToggle", { desc = "Diff" }) -- neotest vim.keymap.set("n", "na", function() require("neotest").run.attach() end, { desc = "Attach Tests" }) vim.keymap.set("n", "nf", function() require("neotest").run.run(vim.fn.expand("%")) end, { desc = "Run Buffer Tests" }) vim.keymap.set("n", "nF", function() require("neotest").run.run({ vim.fn.expand("%"), strategy = "dap" }) end, { desc = "Debug Buffer Tests" }) vim.keymap.set("n", "nl", function() require("neotest").run.run_last() end, { desc = "Run Last Tests" }) vim.keymap.set("n", "nL", function() require("neotest").run.run_last({ strategy = "dap" }) end, { desc = "Debug Last Test" }) vim.keymap.set("n", "nn", function() require("neotest").run.run() end, { desc = "Run All Tests" }) vim.keymap.set("n", "nN", function() require("neotest").run.run({ strategy = "dap" }) end, { desc = "Debug All Tests" }) vim.keymap.set("n", "no", function() require("neotest").output.open({ enter = true }) end, { desc = "Show Output" }) vim.keymap.set("n", "nS", function() require("neotest").run.stop() end, { desc = "Stop Tests" }) vim.keymap.set("n", "ns", function() require("neotest").summary.toggle() end, { desc = "Toggle Summary" }) -- telekasten vim.keymap.set("n", "z", function() require("telekasten").panel() end, { desc = "Telekasten" }) -- refactoring vim.keymap.set("n", "rv", function() require("refactoring").debug.print_var({ normal = true }) end, { desc = "Add Debug Pring" }) vim.keymap.set("n", "rc", function() require("refactoring").debug.cleanup() end, { desc = "Cleanup" }) vim.keymap.set("v", "rr", function() require("refactoring").select_refactor() end, { desc = "Select Refactor" }) -- neogen vim.keymap.set("n", "rn", function() require("neogen").generate() end, { desc = "Add Documentation" }) -- dap vim.keymap.set("n", "dc", function() require("dap").continue() end, { desc = "Continue" }) vim.keymap.set("n", "dn", function() require("dap").step_over() end, { desc = "Step Over" }) vim.keymap.set("n", "di", function() require("dap").step_into() end, { desc = "Step Into" }) vim.keymap.set("n", "do", function() require("dap").step_out() end, { desc = "Step Out" }) vim.keymap.set("n", "db", function() require("dap").toggle_breakpoint() end, { desc = "Toggle Breakpoint" }) vim.keymap.set("n", "dr", function() require("dap").repl.open() end, { desc = "Open Repl" }) vim.keymap.set("n", "dl", function() require("dap").run_last() end, { desc = "Run Last" }) vim.keymap.set("n", "dq", function() require("dap").close() end, { desc = "Quit Debug" })