33 lines
1.9 KiB
Lua
33 lines
1.9 KiB
Lua
local map = vim.keymap.set
|
|
|
|
-- Space as leader key (must be set before lazy loads plugins)
|
|
vim.g.mapleader = " "
|
|
vim.g.maplocalleader = " "
|
|
|
|
-- ── File ────────────────────────────────────────────────────────────────────
|
|
map("n", "<leader>w", "<cmd>w<cr>", { desc = "Save file" })
|
|
map("n", "<leader>q", "<cmd>q<cr>", { desc = "Quit" })
|
|
map("n", "<leader>Q", "<cmd>qa<cr>", { desc = "Quit all" })
|
|
|
|
-- ── Buffers ─────────────────────────────────────────────────────────────────
|
|
map("n", "<S-l>", "<cmd>bnext<cr>", { desc = "Next buffer" })
|
|
map("n", "<S-h>", "<cmd>bprev<cr>", { desc = "Prev buffer" })
|
|
map("n", "<leader>x", "<cmd>bd<cr>", { desc = "Close buffer" })
|
|
|
|
-- ── Window navigation (Ctrl + hjkl) ─────────────────────────────────────────
|
|
map("n", "<C-h>", "<C-w>h", { desc = "Window left" })
|
|
map("n", "<C-j>", "<C-w>j", { desc = "Window down" })
|
|
map("n", "<C-k>", "<C-w>k", { desc = "Window up" })
|
|
map("n", "<C-l>", "<C-w>l", { desc = "Window right" })
|
|
|
|
-- ── Editing quality of life ──────────────────────────────────────────────────
|
|
map("i", "jk", "<Esc>", { desc = "Exit insert mode" }) -- quick escape
|
|
map("n", "<Esc>", "<cmd>nohl<cr>", { desc = "Clear search highlight" })
|
|
|
|
-- Keep indent when tabbing in visual mode
|
|
map("v", "<", "<gv")
|
|
map("v", ">", ">gv")
|
|
|
|
-- Move selected lines up/down
|
|
map("v", "<A-j>", ":m '>+1<cr>gv=gv", { desc = "Move selection down" })
|
|
map("v", "<A-k>", ":m '<-2<cr>gv=gv", { desc = "Move selection up" })
|