nvim-zig/lua/keymaps.lua
2026-02-13 00:39:36 +01:00

73 lines
2.4 KiB
Lua

local wk = require("which-key")
local builtin = require('telescope.builtin')
local Terminal = require('toggleterm.terminal').Terminal
local lazygit = Terminal:new({
cmd = "lazygit",
dir = "git_dir",
direction = "float",
float_opts = {
border = "double",
},
-- function to run on opening the terminal
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", {noremap = true, silent = true})
end,
})
function _lazygit_toggle()
lazygit:toggle()
end
wk.add({
{"<leader>g", "<cmd>lua _lazygit_toggle()<CR>", desc = "Toggle LazyGit"},
-- 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
{ "<leader>d", vim.lsp.buf.definition, desc = "Go to Definition" },
{ "<leader>e", vim.lsp.buf.hover, desc = "Hover Documentation" },
})