Groups for which-key

This commit is contained in:
Valeriy Filippov
2026-03-11 11:12:43 +03:00
parent bfd1fe67b3
commit 892a7fe416
2 changed files with 79 additions and 29 deletions

View File

@@ -14,7 +14,7 @@ local keymap = vim.keymap
-- o Operator pending mode map. Defined using ':omap' or ':onoremap'. -- o Operator pending mode map. Defined using ':omap' or ':onoremap'.
-- Reserved firs characters: -- Reserved firs characters:
-- +/- - numbers -- Update in ../plugins/which-key.lua
-- c - [C]lear / [C]all -- c - [C]lear / [C]all
-- d - [D]iagnostic -- d - [D]iagnostic
-- e - File [E]xplorer -- e - File [E]xplorer
@@ -22,7 +22,6 @@ local keymap = vim.keymap
-- g - [G]it -- g - [G]it
-- h - [H]istory -- h - [H]istory
-- l - [L]SP -- l - [L]SP
-- n - [N]otifications
-- p - [P]anes -- p - [P]anes
-- s - [S]ession -- s - [S]ession
-- t - [T]abs -- t - [T]abs
@@ -30,7 +29,9 @@ local keymap = vim.keymap
-- [C]lear / [C]all -- [C]lear / [C]all
keymap.set("n", "<leader>ch", ":nohl<CR>", { desc = "[C]lear: serch [h]ighlights" }) keymap.set("n", "<leader>ch", ":nohl<CR>", { desc = "[C]lear: serch [h]ighlights" })
keymap.set({"n", "v"}, "<leader>cf", function() require("conform").format() end, { desc = "[C]all: [f]ormat" }) keymap.set({ "n", "v" }, "<leader>cf", function()
require("conform").format()
end, { desc = "[C]all: [f]ormat" })
-- [D]iagnostic -- [D]iagnostic
keymap.set("n", "<leader>dl", vim.diagnostic.open_float, { desc = "[D]iagnostic: [l]ine" }) keymap.set("n", "<leader>dl", vim.diagnostic.open_float, { desc = "[D]iagnostic: [l]ine" })
@@ -38,13 +39,23 @@ keymap.set("n", "<leader>dl", vim.diagnostic.open_float, { desc = "[D]iagnostic:
keymap.set("n", "<leader>db", "<cmd>Telescope diagnostics bufnr=0<CR>", { desc = "[D]iagnostic: [b]uffer" }) keymap.set("n", "<leader>db", "<cmd>Telescope diagnostics bufnr=0<CR>", { desc = "[D]iagnostic: [b]uffer" })
-- folke/trouble.nvim -- folke/trouble.nvim
keymap.set("n", "<leader>dw", "<cmd>Trouble diagnostics toggle<CR>", { desc = "[D]iagnostic: Trouble [w]orkspace" }) keymap.set("n", "<leader>dw", "<cmd>Trouble diagnostics toggle<CR>", { desc = "[D]iagnostic: Trouble [w]orkspace" })
keymap.set("n", "<leader>dc", "<cmd>Trouble diagnostics toggle filter.buf=0<CR>", { desc = "[D]iagnostic: Trouble do[c]ument" }) keymap.set(
"n",
"<leader>dc",
"<cmd>Trouble diagnostics toggle filter.buf=0<CR>",
{ desc = "[D]iagnostic: Trouble do[c]ument" }
)
keymap.set("n", "<leader>dq", "<cmd>Trouble quickfix toggle<CR>", { desc = "[D]iagnostic: Trouble [q]uickfix" }) keymap.set("n", "<leader>dq", "<cmd>Trouble quickfix toggle<CR>", { desc = "[D]iagnostic: Trouble [q]uickfix" })
-- File [E]xplorer -- File [E]xplorer
-- nvim-tree/nvim-tree.lua -- nvim-tree/nvim-tree.lua
keymap.set("n", "<leader>ee", "<cmd>NvimTreeToggle<CR>", { desc = "File [E]xplorer: Toggle file [e]xplorer" }) keymap.set("n", "<leader>ee", "<cmd>NvimTreeToggle<CR>", { desc = "File [E]xplorer: Toggle file [e]xplorer" })
keymap.set("n", "<leader>ef", "<cmd>NvimTreeFindFileToggle<CR>", { desc = "File [E]xplorer: Toggle file explorer on current [f]ile" }) keymap.set(
"n",
"<leader>ef",
"<cmd>NvimTreeFindFileToggle<CR>",
{ desc = "File [E]xplorer: Toggle file explorer on current [f]ile" }
)
keymap.set("n", "<leader>ec", "<cmd>NvimTreeCollapse<CR>", { desc = "File [E]xplorer: [C]ollapse" }) keymap.set("n", "<leader>ec", "<cmd>NvimTreeCollapse<CR>", { desc = "File [E]xplorer: [C]ollapse" })
keymap.set("n", "<leader>er", "<cmd>NvimTreeRefresh<CR>", { desc = "File [E]xplorer: [R]efresh" }) keymap.set("n", "<leader>er", "<cmd>NvimTreeRefresh<CR>", { desc = "File [E]xplorer: [R]efresh" })
@@ -57,7 +68,9 @@ keymap.set("n", "<leader>fc", "<cmd>Telescope grep_string<cr>", { desc = "[F]ind
-- folke/todo-comments.nvim -- folke/todo-comments.nvim
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "[F]ind: [t]odos" }) keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "[F]ind: [t]odos" })
-- folke/snacks.nvim -- folke/snacks.nvim
keymap.set("n", "<leader>fq", function() Snacks.picker.qflist() end, { desc = "[F]ind: [Q]uickfix list" }) keymap.set("n", "<leader>fq", function()
Snacks.picker.qflist()
end, { desc = "[F]ind: [Q]uickfix list" })
-- [G]it -- [G]it
-- lewis6991/gitsigns.nvim -- lewis6991/gitsigns.nvim
@@ -70,24 +83,42 @@ keymap.set("n", "<leader>ghp", "<cmd>Gitsigns nav_hunk prev<CR>", { desc = "[G]i
keymap.set("n", "<leader>ghs", "<cmd>Gitsigns stage_hunk<CR>", { desc = "[G]it [H]unk: [s]tage" }) keymap.set("n", "<leader>ghs", "<cmd>Gitsigns stage_hunk<CR>", { desc = "[G]it [H]unk: [s]tage" })
keymap.set("n", "<leader>ghr", "<cmd>Gitsigns reset_hunk<CR>", { desc = "[G]it [H]unk: [r]eset" }) keymap.set("n", "<leader>ghr", "<cmd>Gitsigns reset_hunk<CR>", { desc = "[G]it [H]unk: [r]eset" })
keymap.set("n", "<leader>ghv", "<cmd>Gitsigns preview_hunk<CR>", { desc = "[G]it [H]unk: pre[v]iew" }) keymap.set("n", "<leader>ghv", "<cmd>Gitsigns preview_hunk<CR>", { desc = "[G]it [H]unk: pre[v]iew" })
keymap.set("v", "<leader>ghs", function() require("gitsigns").stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "[G]it [H]unk: [s]tage" }) keymap.set("v", "<leader>ghs", function()
keymap.set("v", "<leader>ghr", function() require("gitsigns").reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "[G]it [H]unk: [r]eset" }) require("gitsigns").stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
end, { desc = "[G]it [H]unk: [s]tage" })
keymap.set("v", "<leader>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" }, "<leader>gh", "<cmd>Gitsigns select_hunk<CR>", { desc = "[G]it [H]unk: select" }) keymap.set({ "o", "x" }, "<leader>gh", "<cmd>Gitsigns select_hunk<CR>", { desc = "[G]it [H]unk: select" })
-- [H]istory -- [H]istory
-- folke/snacks.nvim -- folke/snacks.nvim
keymap.set("n", "<leader>hn", function() Snacks.picker.notifications() end, { desc = "[H]istory: [N]otifications" } ) keymap.set("n", "<leader>hn", function()
keymap.set("n", "<leader>hc", function() Snacks.picker.command_history() end, { desc = "[H]istory: [C]ommands" } ) Snacks.picker.notifications()
end, { desc = "[H]istory: [N]otifications" })
keymap.set("n", "<leader>hc", function()
Snacks.picker.command_history()
end, { desc = "[H]istory: [C]ommands" })
-- [L]SP -- [L]SP
keymap.set({ "n", "v" }, "<leader>ld", vim.lsp.buf.hover, { desc = "[L]SP: Hover [D]ocumentation" }) keymap.set({ "n", "v" }, "<leader>ld", vim.lsp.buf.hover, { desc = "[L]SP: Hover [D]ocumentation" })
keymap.set({ "n", "v" }, "<leader>la", vim.lsp.buf.code_action, { desc = "[L]SP: avalible code [a]ctions" }) keymap.set({ "n", "v" }, "<leader>la", vim.lsp.buf.code_action, { desc = "[L]SP: avalible code [a]ctions" })
-- folke/snacks.nvim -- folke/snacks.nvim
keymap.set("n", "<leader>lf", function() Snacks.picker.lsp_definitions() end, { desc = "[L]SP: Goto De[f]initions" }) keymap.set("n", "<leader>lf", function()
keymap.set("n", "<leader>lc", function() Snacks.picker.lsp_declarations() end, { desc = "[L]SP: Goto De[c]larations" }) Snacks.picker.lsp_definitions()
keymap.set("n", "<leader>le", function() Snacks.picker.lsp_references() end, { desc = "[L]SP: R[e]ferences" }) end, { desc = "[L]SP: Goto De[f]initions" })
keymap.set("n", "<leader>li", function() Snacks.picker.lsp_implementations() end, { desc = "[L]SP: Goto [I]mplementations" }) keymap.set("n", "<leader>lc", function()
keymap.set("n", "<leader>ly", function() Snacks.picker.lsp_type_definitions() end, { desc = "[L]SP: Goto T[y]pe Definitions" }) Snacks.picker.lsp_declarations()
end, { desc = "[L]SP: Goto De[c]larations" })
keymap.set("n", "<leader>le", function()
Snacks.picker.lsp_references()
end, { desc = "[L]SP: R[e]ferences" })
keymap.set("n", "<leader>li", function()
Snacks.picker.lsp_implementations()
end, { desc = "[L]SP: Goto [I]mplementations" })
keymap.set("n", "<leader>ly", function()
Snacks.picker.lsp_type_definitions()
end, { desc = "[L]SP: Goto T[y]pe Definitions" })
-- [P]anes -- [P]anes
keymap.set("n", "<leader>pv", "<C-w>v", { desc = "[P]ane: split [v]ertically" }) keymap.set("n", "<leader>pv", "<C-w>v", { desc = "[P]ane: split [v]ertically" })
@@ -113,8 +144,12 @@ keymap.set("n", "<leader>tb", "<cmd>tabnew %<CR>", { desc = "[T]ab: Open current
-- [U]I -- [U]I
-- folke/snacks.nvim -- folke/snacks.nvim
keymap.set("n", "<leader>ug", function() Snacks.lazygit() end, { desc = "[U]I: Open [L]azyGit" }) keymap.set("n", "<leader>ug", function()
keymap.set("n", "<leader>ud", function() Snacks.dashboard() end, { desc = "[U]I: Open [D]ashboard" }) Snacks.lazygit()
end, { desc = "[U]I: Open [L]azyGit" })
keymap.set("n", "<leader>ud", function()
Snacks.dashboard()
end, { desc = "[U]I: Open [D]ashboard" })
-- folke/lazy.nvim -- folke/lazy.nvim
keymap.set("n", "<leader>ul", "<cmd>Lazy<CR>", { desc = "[U]I: Open [L]azyVim" }) keymap.set("n", "<leader>ul", "<cmd>Lazy<CR>", { desc = "[U]I: Open [L]azyVim" })
-- mason-org/mason.nvim -- mason-org/mason.nvim
@@ -124,4 +159,6 @@ keymap.set("n", "<leader>um", "<cmd>Mason<CR>", { desc = "[U]I: Open [M]ason" })
-- VonHeikemen/fine-cmdline.nvim -- VonHeikemen/fine-cmdline.nvim
keymap.set("n", ":", "<cmd>FineCmdline<CR>", { desc = "Fine Command Line" }) keymap.set("n", ":", "<cmd>FineCmdline<CR>", { desc = "Fine Command Line" })
-- folke/which-key.nvim -- folke/which-key.nvim
keymap.set("n", "<leader>?", function() require("which-key").show({ global = false }) end, { desc = "Buffer Local Keymaps (which-key)" }) keymap.set("n", "<leader>?", function()
require("which-key").show({ global = false })
end, { desc = "Buffer Local Keymaps (which-key)" })

View File

@@ -10,5 +10,18 @@ return {
-- your configuration comes here -- your configuration comes here
-- or leave it empty to use the default settings -- or leave it empty to use the default settings
-- refer to the configuration section below -- refer to the configuration section below
} spec = {
{ "<leader>c", group = "[C]lear / [C]all" },
{ "<leader>d", group = "[D]iagnostic" },
{ "<leader>e", group = "File [E]xplorer" },
{ "<leader>f", group = "[F]ind" },
{ "<leader>g", group = "[G]it" },
{ "<leader>h", group = "[H]istory" },
{ "<leader>l", group = "[L]SP" },
{ "<leader>p", group = "[P]anes" },
{ "<leader>s", group = "[S]ession" },
{ "<leader>t", group = "[T]abs" },
{ "<leader>u", group = "[U]i" },
},
},
} }