-- Setup leader key vim.g.mapleader = " " vim.g.maplocalleader = " " local keymap = vim.keymap -- Vim modes: -- n Normal mode map. Defined using ':nmap' or ':nnoremap'. -- i Insert mode map. Defined using ':imap' or ':inoremap'. -- v Visual and select mode map. Defined using ':vmap' or ':vnoremap'. -- x Visual mode map. Defined using ':xmap' or ':xnoremap'. -- s Select mode map. Defined using ':smap' or ':snoremap'. -- c Command-line mode map. Defined using ':cmap' or ':cnoremap'. -- o Operator pending mode map. Defined using ':omap' or ':onoremap'. -- Reserved firs characters: -- +/- - numbers -- c - [C]lear -- d - [D]iagnostic -- e - File [E]xplorer -- f - [F]ind -- g - [G]it -- h - [H]istory -- l - [L]SP -- n - [N]otifications -- p - [P]anes -- s - [S]ession -- t - [T]abs -- u - [U]i -- [C]lear highlits keymap.set("n", "ch", ":nohl", { desc = "[C]lear: serch [h]ighlights" }) -- [D]iagnostic keymap.set("n", "dl", vim.diagnostic.open_float, { desc = "[D]iagnostic: [l]ine" }) keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Hover Documentation" }) keymap.set({ "n", "v" }, "da", vim.lsp.buf.code_action, { desc = "[D]iagnostic: avalible code [a]ctions" }) -- nvim-telescope/telescope.nvim keymap.set("n", "db", "Telescope diagnostics bufnr=0", { desc = "[D]iagnostic: [b]uffer" }) -- folke/trouble.nvim keymap.set("n", "dw", "Trouble diagnostics toggle", { desc = "[D]iagnostic: Trouble [w]orkspace" }) keymap.set("n", "dc", "Trouble diagnostics toggle filter.buf=0", { desc = "[D]iagnostic: Trouble do[c]ument" }) keymap.set("n", "dq", "Trouble quickfix toggle", { desc = "[D]iagnostic: Trouble [q]uickfix" }) -- File [E]xplorer -- nvim-tree/nvim-tree.lua keymap.set("n", "ee", "NvimTreeToggle", { desc = "File [E]xplorer: Toggle file [e]xplorer" }) keymap.set("n", "ef", "NvimTreeFindFileToggle", { desc = "File [E]xplorer: Toggle file explorer on current [f]ile" }) keymap.set("n", "ec", "NvimTreeCollapse", { desc = "File [E]xplorer: [C]ollapse" }) keymap.set("n", "er", "NvimTreeRefresh", { desc = "File [E]xplorer: [R]efresh" }) -- [F]ind -- nvim-telescope/telescope.nvim keymap.set("n", "ff", "Telescope find_files", { desc = "[F]ind: [f]iles in cwd" }) keymap.set("n", "fr", "Telescope oldfiles", { desc = "[F]ind: [r]ecent files" }) keymap.set("n", "fs", "Telescope live_grep", { desc = "[F]ind: string in cwd" }) keymap.set("n", "fc", "Telescope grep_string", { desc = "[F]ind: string under [c]ursor in cwd" }) -- folke/todo-comments.nvim keymap.set("n", "ft", "TodoTelescope", { desc = "[F]ind: [t]odos" }) -- folke/snacks.nvim keymap.set("n", "fq", function() Snacks.picker.qflist() end, { desc = "[F]ind: [Q]uickfix list" }) -- [G]it -- lewis6991/gitsigns.nvim keymap.set("n", "gs", "Gitsigns stage_buffer", { desc = "[G]it: [s]tage buffer" }) keymap.set("n", "gr", "Gitsigns reset_buffer", { desc = "[G]it: [r]eset buffer" }) keymap.set("n", "gb", "Gitsigns blame_line", { desc = "[G]it: [b]lame line" }) keymap.set("n", "gd", "Gitsigns diffthis", { desc = "[G]it: [d]iff this" }) keymap.set("n", "ghn", "Gitsigns nav_hunk next", { desc = "[G]it [H]unk: [n]ext" }) keymap.set("n", "ghp", "Gitsigns nav_hunk prev", { desc = "[G]it [H]unk: [p]revious" }) keymap.set("n", "ghs", "Gitsigns stage_hunk", { desc = "[G]it [H]unk: [s]tage" }) keymap.set("n", "ghr", "Gitsigns reset_hunk", { desc = "[G]it [H]unk: [r]eset" }) keymap.set("n", "ghv", "Gitsigns preview_hunk", { desc = "[G]it [H]unk: pre[v]iew" }) keymap.set("v", "ghs", function() require("gitsigns").stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "[G]it [H]unk: [s]tage" }) keymap.set("v", "ghr", function() require("gitsigns").reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "[G]it [H]unk: [r]eset" }) keymap.set({ "o", "x" }, "gh", "Gitsigns select_hunk", { desc = "[G]it [H]unk: select" }) -- [H]istory -- folke/snacks.nvim keymap.set("n", "hn", function() Snacks.picker.notifications() end, { desc = "[H]istory: [N]otifications" } ) keymap.set("n", "hc", function() Snacks.picker.command_history() end, { desc = "[H]istory: [C]ommands" } ) -- [L]SP -- folke/snacks.nvim keymap.set("n", "lf", function() Snacks.picker.lsp_definitions() end, { desc = "[L]SP: Goto De[f]initions" }) keymap.set("n", "lc", function() Snacks.picker.lsp_declarations() end, { desc = "[L]SP: Goto De[c]larations" }) keymap.set("n", "le", function() Snacks.picker.lsp_references() end, { desc = "[L]SP: Goto R[e]ferences" }) keymap.set("n", "li", function() Snacks.picker.lsp_implementations() end, { desc = "[L]SP: Goto [I]mplementations" }) keymap.set("n", "ly", function() Snacks.picker.lsp_type_definitions() end, { desc = "[L]SP: Goto T[y]pe Definitions" }) -- [P]anes keymap.set("n", "pv", "v", { desc = "[P]ane: split [v]ertically" }) keymap.set("n", "ph", "s", { desc = "[P]ane: split [h]orizontally" }) keymap.set("n", "pe", "=", { desc = "[P]ane: Make splits [e]qual size" }) keymap.set("n", "pc", "close", { desc = "[P]ane: [C]lose current split" }) -- szw/vim-maximizer keymap.set("n", "pm", "MaximizerToggle", { desc = "[P]ane: [M]aximize/minimize current split" }) -- [S]ession -- rmagatti/auto-session keymap.set("n", "sr", "AutoSession restore", { desc = "[S]ession: [R]estore" }) keymap.set("n", "ss", "AutoSession save", { desc = "[S]ession: [S]ave" }) keymap.set("n", "sf", "AutoSession search", { desc = "[S]ession: [F]ind" }) keymap.set("n", "sd", "AutoSession deletePicker", { desc = "[S]ession: [D]elete" }) -- [T]abs keymap.set("n", "to", "tabnew", { desc = "[T]ab: Open new" }) keymap.set("n", "tc", "tabclose", { desc = "[T]ab: [C]lose current" }) keymap.set("n", "tn", "tabn", { desc = "[T]ab: Go to [n]ext" }) keymap.set("n", "tp", "tabp", { desc = "[T]ab: Go to [p]revious" }) keymap.set("n", "tb", "tabnew %", { desc = "[T]ab: Open current buffer in new tab" }) -- [U]I -- folke/snacks.nvim keymap.set("n", "ug", function() Snacks.lazygit() end, { desc = "[U]I: Open [L]azyGit" }) keymap.set("n", "ud", function() Snacks.dashboard() end, { desc = "[U]I: Open [D]ashboard" }) -- folke/lazy.nvim keymap.set("n", "ul", "Lazy", { desc = "[U]I: Open [L]azyVim" }) -- Misc -- VonHeikemen/fine-cmdline.nvim keymap.set("n", ":", "FineCmdline", { desc = "Fine Command Line" }) -- folke/which-key.nvim keymap.set("n", "?", function() require("which-key").show({ global = false }) end, { desc = "Buffer Local Keymaps (which-key)" })