57 lines
2.1 KiB
Lua
57 lines
2.1 KiB
Lua
vim.g.mapleader = " "
|
|
vim.g.maplocalleader = " "
|
|
|
|
local map = vim.keymap.set
|
|
|
|
-- Better window navigation
|
|
map("n", "<C-h>", "<C-w>h", { desc = "Go to left window" })
|
|
map("n", "<C-j>", "<C-w>j", { desc = "Go to lower window" })
|
|
map("n", "<C-k>", "<C-w>k", { desc = "Go to upper window" })
|
|
map("n", "<C-l>", "<C-w>l", { desc = "Go to right window" })
|
|
|
|
-- Resize windows
|
|
map("n", "<C-Up>", ":resize +2<CR>", { desc = "Increase window height" })
|
|
map("n", "<C-Down>", ":resize -2<CR>", { desc = "Decrease window height" })
|
|
map("n", "<C-Left>", ":vertical resize -2<CR>", { desc = "Decrease window width" })
|
|
map("n", "<C-Right>", ":vertical resize +2<CR>", { desc = "Increase window width" })
|
|
|
|
-- Buffers
|
|
map("n", "<S-l>", ":bnext<CR>", { desc = "Next buffer" })
|
|
map("n", "<S-h>", ":bprevious<CR>", { desc = "Previous buffer" })
|
|
map("n", "<leader>bd", function()
|
|
local current = vim.api.nvim_get_current_buf()
|
|
local bufs = vim.tbl_filter(function(b)
|
|
return b.bufnr ~= current and vim.bo[b.bufnr].filetype ~= "neo-tree"
|
|
end, vim.fn.getbufinfo({ buflisted = 1 }))
|
|
if #bufs > 0 then
|
|
vim.api.nvim_set_current_buf(bufs[1].bufnr)
|
|
end
|
|
vim.cmd("bdelete " .. current)
|
|
end, { desc = "Delete buffer" })
|
|
|
|
-- Move lines up/down in visual mode
|
|
map("v", "J", ":m '>+1<CR>gv=gv", { desc = "Move selection down" })
|
|
map("v", "K", ":m '<-2<CR>gv=gv", { desc = "Move selection up" })
|
|
|
|
-- Keep cursor centered when scrolling
|
|
map("n", "<C-d>", "<C-d>zz")
|
|
map("n", "<C-u>", "<C-u>zz")
|
|
|
|
-- Keep cursor centered on search results
|
|
map("n", "n", "nzzzv")
|
|
map("n", "N", "Nzzzv")
|
|
|
|
-- Clear search highlight
|
|
map("n", "<Esc>", ":nohlsearch<CR>", { desc = "Clear search highlight" })
|
|
|
|
-- Better paste (don't override register)
|
|
map("x", "<leader>p", '"_dP', { desc = "Paste without overwriting register" })
|
|
|
|
-- Save file
|
|
map("n", "<C-s>", ":w<CR>", { desc = "Save file" })
|
|
|
|
-- Diagnostic navigation
|
|
map("n", "[d", vim.diagnostic.goto_prev, { desc = "Previous diagnostic" })
|
|
map("n", "]d", vim.diagnostic.goto_next, { desc = "Next diagnostic" })
|
|
map("n", "<leader>e", vim.diagnostic.open_float, { desc = "Show diagnostic" })
|