home/dot_config/nvim/lua/plugins/which-key.lua
2025-04-29 10:28:17 +02:00

63 lines
2 KiB
Lua

-- Configuration for which-key
return {
{
"folke/which-key.nvim",
event = "VeryLazy",
opts = {
preset = "helix",
spec = {
-- Groups
{ "<leader>f", group = "file" },
{ "<leader>b", group = "buffer" },
{ "<leader>c", group = "code" },
{ "<leader>g", group = "git" },
{ "<leader>s", group = "search" },
{ "<leader>w", group = "window" },
{ "<leader>,", group = "vim" },
{ "<leader>q", group = "quit" },
-- Buffer navigation
{ "<leader>`", "<cmd>e #<cr>", desc = "Switch to other buffer", mode = "n" },
{ "<leader>bd", "<cmd>bd<cr>", desc = "Delete buffer", mode = "n" },
{ "<leader>bn", "<cmd>bn<cr>", desc = "Next buffer", mode = "n", proxy = "<S-l>" },
{ "<leader>bp", "<cmd>bp<cr>", desc = "Previous buffer", mode = "n", proxy = "<S-h>" },
-- Better indentation
{ "<", "<gv", mode = "v" },
{ ">", ">gv", mode = "v" },
-- Windows
{ "<leader>ws", "<C-W>s", desc = "Split window below" },
{ "<leader>wv", "<C-W>v", desc = "Split window right" },
{ "<leader>wq", "<C-W>c", desc = "Close window" },
{ "<leader>wO", "<C-W>o", desc = "Close other windows" },
-- LSP
{ "gd", "<cmd>lua vim.lsp.buf.definition()<cr>", desc = "Go to definition" },
{ "ga", "<cmd>lua vim.lsp.buf.code_action()<cr>", desc = "Code action" },
{ "gr", "<cmd>lua vim.lsp.buf.references()<cr>", desc = "List references" },
{ "gR", "<cmd>lua vim.lsp.buf.rename()<cr>", desc = "Rename symbol" },
-- Quitting
{ "<leader>qq", "<cmd>qa<cr>", desc = "Quit all" },
-- Lazy
{ "<leader>l", "<cmd>Lazy<cr>", mode = "n", desc = "Lazy" },
-- Mason
{ "<leader>cm", "<cmd>Mason<cr>", mode = "n", desc = "Mason" },
-- Clear search on escape
{
"<esc>",
function()
vim.cmd("noh")
return "<esc>"
end,
expr = true,
},
},
},
},
}