nvim/plugin/keymaps.lua
2026-02-20 19:09:06 -05:00

29 lines
1.3 KiB
Lua

-- Keymaps using global map() helper
-- File operations
map("n", "<leader>w", "<cmd>w<cr>", { desc = "Save file" })
map("n", "<leader>q", "<cmd>q<cr>", { desc = "Quit" })
map("n", "<C-g>", "<cmd>Git<cr><cmd>only<cr>", { desc = "Git status (fullscreen)" })
-- Buffer navigation
map("n", "<Tab>", "<cmd>bnext<cr>", { desc = "Next buffer" })
map("n", "<S-Tab>", "<cmd>bprev<cr>", { desc = "Previous buffer" })
map("n", "<leader>x", "<cmd>bdelete<cr>", { desc = "Close buffer" })
map("n", "<leader>b", "<cmd>enew<cr>", { desc = "New buffer" })
-- Window navigation
map("n", "<C-h>", "<C-w>h", { desc = "Move to left window" })
map("n", "<C-j>", "<C-w>j", { desc = "Move to lower window" })
map("n", "<C-k>", "<C-w>k", { desc = "Move to upper window" })
map("n", "<C-l>", "<C-w>l", { desc = "Move to right window" })
-- Better defaults
map("n", "J", "mzJ`z", { desc = "Join lines keeping cursor position" })
map("x", "x", '"_x', { desc = "Delete char without yanking" })
map("x", "p", '"_dP', { desc = "Paste without yanking replaced text" })
map("n", "<Esc>", "<cmd>nohlsearch<cr>", { desc = "Clear search highlight" })
map("n", "<leader>tw", "<cmd>setlocal wrap!<cr>", { desc = "Toggle word wrap" })
-- Terminal
map("t", "<Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })