-- Key mappings local keymap = vim.keymap.set -- File explorer keymap('n', 'e', ':NvimTreeToggle', { desc = "Toggle file explorer" }) -- Fuzzy finder keymap('n', 'ff', 'Telescope find_files', { desc = "Find files" }) keymap('n', 'fg', 'Telescope live_grep', { desc = "Live grep" }) keymap('n', 'fb', 'Telescope buffers', { desc = "Find buffers" }) keymap('n', 'fr', 'Telescope oldfiles', { desc = "Recent files" }) -- Git (Telescope pickers) keymap('n', 'gt', 'Telescope git_status', { desc = "Git status" }) keymap('n', 'gc', 'Telescope git_commits', { desc = "Git commits" }) keymap('n', 'gf', 'Telescope git_bcommits', { desc = "File commits" }) keymap('n', 'gw', 'Telescope git_branches', { desc = "Git branches" }) -- Better window navigation keymap('n', '', 'h') keymap('n', '', 'j') keymap('n', '', 'k') keymap('n', '', 'l') -- Quick save and quit keymap('n', 'w', ':w', { desc = "Save" }) keymap('n', 'q', ':q', { desc = "Quit" }) -- Buffer navigation (bufferline) keymap('n', 'bp', 'BufferLineTogglePin', { desc = "Pin buffer" }) keymap('n', 'bP', 'BufferLineGroupClose ungrouped', { desc = "Close non-pinned" }) keymap('n', 'bo', 'BufferLineCloseOthers', { desc = "Close other buffers" }) keymap('n', 'bl', 'BufferLineCloseRight', { desc = "Close buffers to right" }) keymap('n', 'bh', 'BufferLineCloseLeft', { desc = "Close buffers to left" }) keymap('n', '1', 'BufferLineGoToBuffer 1', { desc = "Go to buffer 1" }) keymap('n', '2', 'BufferLineGoToBuffer 2', { desc = "Go to buffer 2" }) keymap('n', '3', 'BufferLineGoToBuffer 3', { desc = "Go to buffer 3" }) keymap('n', '4', 'BufferLineGoToBuffer 4', { desc = "Go to buffer 4" }) keymap('n', '5', 'BufferLineGoToBuffer 5', { desc = "Go to buffer 5" }) keymap('n', 'bd', 'bdelete', { desc = "Delete buffer" }) keymap('n', '', 'BufferLineCycleNext', { desc = "Next buffer" }) keymap('n', '', 'BufferLineCyclePrev', { desc = "Previous buffer" }) -- Terminal (toggleterm) keymap('n', 'tf', 'ToggleTerm direction=float', { desc = "Float terminal" }) keymap('n', 'th', 'ToggleTerm direction=horizontal', { desc = "Horizontal terminal" }) keymap('n', 'tv', 'ToggleTerm direction=vertical', { desc = "Vertical terminal" }) keymap('n', 'tt', 'ToggleTerm', { desc = "Toggle terminal" }) keymap('n', 'tg', 'lua _LAZYGIT_TOGGLE()', { desc = "Lazygit" }) keymap('n', 'tp', 'lua _PYTHON_TOGGLE()', { desc = "Python REPL" }) keymap('n', 'tn', 'lua _NODE_TOGGLE()', { desc = "Node REPL" }) -- Terminal mode escape keymap('t', '', [[]], { desc = "Exit terminal mode" }) keymap('t', '', [[wincmd h]], { desc = "Window left" }) keymap('t', '', [[wincmd j]], { desc = "Window down" }) keymap('t', '', [[wincmd k]], { desc = "Window up" }) keymap('t', '', [[wincmd l]], { desc = "Window right" }) -- Session management keymap('n', 'ss', 'SessionSave', { desc = "Save session" }) keymap('n', 'sr', 'SessionRestore', { desc = "Restore session" }) keymap('n', 'sd', 'SessionDelete', { desc = "Delete session" }) -- DAP (debugging) keymap('n', 'db', 'lua require("dap").toggle_breakpoint()', { desc = "Toggle breakpoint" }) keymap('n', 'dB', 'lua require("dap").set_breakpoint(vim.fn.input("Condition: "))', { desc = "Conditional breakpoint" }) keymap('n', 'dc', 'lua require("dap").continue()', { desc = "Continue" }) keymap('n', 'di', 'lua require("dap").step_into()', { desc = "Step into" }) keymap('n', 'do', 'lua require("dap").step_over()', { desc = "Step over" }) keymap('n', 'dO', 'lua require("dap").step_out()', { desc = "Step out" }) keymap('n', 'dr', 'lua require("dap").repl.toggle()', { desc = "Toggle REPL" }) keymap('n', 'dl', 'lua require("dap").run_last()', { desc = "Run last" }) keymap('n', 'du', 'lua require("dapui").toggle()', { desc = "Toggle DAP UI" }) keymap('n', 'dt', 'lua require("dap").terminate()', { desc = "Terminate" }) keymap('n', '', 'lua require("dap").continue()', { desc = "Debug: Continue" }) keymap('n', '', 'lua require("dap").step_over()', { desc = "Debug: Step Over" }) keymap('n', '', 'lua require("dap").step_into()', { desc = "Debug: Step Into" }) keymap('n', '', 'lua require("dap").step_out()', { desc = "Debug: Step Out" }) -- Noice (notifications) keymap('n', 'nl', 'Noice last', { desc = "Last notification" }) keymap('n', 'nh', 'Noice history', { desc = "Notification history" }) keymap('n', 'na', 'Noice all', { desc = "All notifications" }) keymap('n', 'nd', 'Noice dismiss', { desc = "Dismiss notifications" }) -- Markdown preview keymap('n', 'mp', 'MarkdownPreviewToggle', { desc = "Toggle markdown preview" }) -- Database keymap('n', 'Du', 'DBUIToggle', { desc = "Toggle DBUI" }) keymap('n', 'Df', 'DBUIFindBuffer', { desc = "Find DB buffer" }) keymap('n', 'Da', 'DBUIAddConnection', { desc = "Add DB connection" }) -- HTTP client keymap('n', 'hr', 'lua require("rest-nvim").run()', { desc = "Run HTTP request" }) keymap('n', 'hp', 'lua require("rest-nvim").run(true)', { desc = "Preview HTTP request" }) keymap('n', 'hl', 'lua require("rest-nvim").last()', { desc = "Re-run last request" })