nvim-zig/lua/keymaps.lua
2026-02-12 20:54:47 +01:00

52 lines
1.8 KiB
Lua

local wk = require("which-key")
local builtin = require('telescope.builtin')
wk.add({
-- Essentials
{ "<leader>w", "<cmd>w<cr>", desc = "Save File" },
{ "<leader>q", "<cmd>q<cr>", desc = "Quit" },
{ "<leader>e", "<cmd>NvimTreeToggle<cr>", desc = "Toggle Explorer (Tree)" },
-- Navigation / Buffers
{ "<leader>[", "<cmd>bprevious<cr>", desc = "Prev Buffer" },
{ "<leader>]", "<cmd>bnext<cr>", desc = "Next Buffer" },
{ "<leader>b", builtin.buffers, desc = "List Buffers (Telescope)" },
{ "<leader>x", "<cmd>bdelete<cr>", desc = "Close Buffer" },
-- File Group
{ "<leader>f", group = "File" },
{ "<leader>fn", function()
local name = vim.fn.input("New file/dir: ")
if name == "" then return end
if name:sub(-1) == "/" then
vim.fn.mkdir(name, "p")
else
local dir = vim.fn.fnamemodify(name, ":h")
if vim.fn.isdirectory(dir) == 0 then vim.fn.mkdir(dir, "p") end
vim.cmd("edit " .. name)
end
end, desc = "New File/Dir" },
{ "<leader>fd", function()
local current_file = vim.api.nvim_buf_get_name(0)
if current_file == "" then return end
if vim.fn.confirm("Delete " .. current_file .. "?", "&Yes\n&No", 2) == 1 then
os.remove(current_file)
vim.api.nvim_buf_delete(0, { force = true })
end
end, desc = "Delete Current File" },
-- Search Group
{ "<leader>s", group = "Search" },
{ "<leader>sf", builtin.find_files, desc = "Files" },
{ "<leader>sw", builtin.live_grep, desc = "Word (Global)" },
-- Symbol Searching
{ "<leader>ss", builtin.lsp_dynamic_workspace_symbols, desc = "Workspace Symbols" },
{ "<leader>sl", builtin.lsp_document_symbols, desc = "Document Symbols (Current File)" },
-- LSP
{ "gd", vim.lsp.buf.definition, desc = "Go to Definition" },
{ "K", vim.lsp.buf.hover, desc = "Hover Documentation" },
})