Files
Panama/config/dot/nvim/lua/config/keymaps.lua
T
2026-06-02 09:19:42 -04:00

156 lines
3.6 KiB
Lua

-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Remove LazyVim's C-h/j/k/l window navigation (using <leader>h/j/k/l instead)
pcall(vim.keymap.del, "n", "<C-h>")
pcall(vim.keymap.del, "n", "<C-j>")
pcall(vim.keymap.del, "n", "<C-k>")
pcall(vim.keymap.del, "n", "<C-l>")
pcall(vim.keymap.del, "t", "<C-h>")
pcall(vim.keymap.del, "t", "<C-j>")
pcall(vim.keymap.del, "t", "<C-k>")
pcall(vim.keymap.del, "t", "<C-l>")
-- Remove LazyVim's :Lazy shortcut — <leader>l is used for window navigation
pcall(vim.keymap.del, "n", "<leader>l")
-- Window navigation
vim.keymap.set(
{ "n", "v", "x" },
"<leader>h",
"<C-w>h",
{ desc = "Go to left window", silent = true }
)
vim.keymap.set(
{ "n", "v", "x" },
"<leader>j",
"<C-w>j",
{ desc = "Go to lower window", silent = true }
)
vim.keymap.set(
{ "n", "v", "x" },
"<leader>k",
"<C-w>k",
{ desc = "Go to upper window", silent = true }
)
vim.keymap.set(
{ "n", "v", "x" },
"<leader>l",
"<C-w>l",
{ desc = "Go to right window", silent = true }
)
-- Buffer tab navigation
vim.keymap.set(
"n",
"<C-h>",
"<cmd>BufferLineCyclePrev<cr>",
{ desc = "Previous buffer", silent = true }
)
vim.keymap.set(
"n",
"<C-l>",
"<cmd>BufferLineCycleNext<cr>",
{ desc = "Next buffer", silent = true }
)
vim.keymap.set(
"n",
"<C-j>",
"<cmd>BufferLineMovePrev<cr>",
{ desc = "Move buffer left", silent = true }
)
vim.keymap.set(
"n",
"<C-k>",
"<cmd>BufferLineMoveNext<cr>",
{ desc = "Move buffer right", silent = true }
)
vim.keymap.set("n", "<C-q>", function()
Snacks.bufdelete()
end, { desc = "Close buffer", silent = true })
vim.keymap.set("n", "<C-a>", function()
Snacks.bufdelete.other()
end, { desc = "Close other buffers", silent = true })
-- Disable ex mode
vim.keymap.set("n", "Q", "<nop>")
-- Move selected lines up/down
vim.keymap.set(
"v",
"J",
":m '>+1<CR>gv=gv",
{ desc = "Move selection down", silent = true }
)
vim.keymap.set(
"v",
"K",
":m '<-2<CR>gv=gv",
{ desc = "Move selection up", silent = true }
)
-- Join line without moving cursor
vim.keymap.set("n", "J", "mzJ`z", { desc = "Join line, keep cursor" })
-- Scroll and center
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Scroll down and center" })
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Scroll up and center" })
-- Search and center
vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result" })
vim.keymap.set("n", "N", "Nzzzv", { desc = "Prev search result" })
-- Yank to system clipboard
vim.keymap.set({ "n", "v" }, "<leader>y", '"+y', { desc = "Yank to clipboard" })
vim.keymap.set("n", "<leader>Y", '"+Y', { desc = "Yank line to clipboard" })
vim.keymap.set(
"n",
"<leader>YY",
":%y+<CR>",
{ desc = "Yank buffer to clipboard" }
)
-- Delete to black hole register (no yank side effect)
vim.keymap.set(
{ "n", "v" },
"<leader>d",
'"_d',
{ desc = "Delete to black hole" }
)
vim.keymap.set(
"n",
"<leader>dd",
'"_dd',
{ desc = "Delete line to black hole" }
)
-- Paste from system clipboard
vim.keymap.set(
{ "n", "v", "x" },
"<leader>p",
'"+p',
{ desc = "Paste from clipboard (after)" }
)
vim.keymap.set(
{ "n", "v", "x" },
"<leader>P",
'"+P',
{ desc = "Paste from clipboard (before)" }
)
-- Paste over selection without overwriting the yank register
vim.keymap.set("x", "<leader>v", '"_dP', { desc = "Paste over selection" })
-- Utility
vim.keymap.set(
"n",
"<leader>so",
":update<CR>:source<CR>",
{ desc = "Save and source file" }
)
vim.keymap.set(
"n",
"<leader><leader>x",
":!chmod +x %<CR>",
{ desc = "Make file executable" }
)