dotfiles/config/common/nvim/lua/config/keymaps.lua

97 lines
3.4 KiB
Lua

vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
local map = vim.keymap.set
local nomap = vim.keymap.del
nomap("n", "[D")
nomap("n", "]D")
local diagnostic_goto = function(next, severity)
local go = next and vim.diagnostic.goto_next or vim.diagnostic.goto_prev
severity = severity and vim.diagnostic.severity[severity] or nil
return function()
go({ severity = severity })
end
end
map({ "i", "n", "s" }, "<esc>", function()
vim.cmd("noh")
return "<esc>"
end, { expr = true, desc = "Escape and Clear hlsearch" })
map("i", "<C-a>", "<esc>I")
map("i", "<C-e>", "<esc>A")
map("n", "]d", diagnostic_goto(true), { desc = "next diagnostic" })
map("n", "[d", diagnostic_goto(false), { desc = "prev diagnostic" })
map("n", "]e", diagnostic_goto(true, "ERROR"), { desc = "next error" })
map("n", "[e", diagnostic_goto(false, "ERROR"), { desc = "prev error" })
map("n", "]w", diagnostic_goto(true, "WARN"), { desc = "next warning" })
map("n", "[w", diagnostic_goto(false, "WARN"), { desc = "prev warning" })
map("v", "<leader>/", "gc", { desc = "toggle comments", remap = true })
map("n", "<esc><cr>", "<cmd>wqa<cr>", { desc = "save and exit", remap = true })
map("n", "<tab>", "<C-w>w", { desc = "switch pane", remap = true })
map("n", "+", ":vertical resize +5<CR>")
map("n", "_", ":vertical resize -5<CR>")
map("n", "=", ":resize +5<CR>")
map("n", "-", ":resize -5<CR>")
map("n", "<leader>-", "<C-W>s", { desc = "split horizontally", remap = true })
map("n", "<leader>/", "gcc", { desc = "toggle comments", remap = true })
map("n", "<leader>|", "<C-W>v", { desc = "split vertically", remap = true })
map("n", "<leader>b[", "<cmd>bprevious<CR>", { desc = "buffer previous", remap = true })
map("n", "<leader>b]", "<cmd>bnext<CR>", { desc = "buffer next", remap = true })
map("n", "<leader>bd", function()
Snacks.bufdelete()
end, { desc = "buffer delete", remap = true })
map("n", "<leader>bl", function()
Snacks.picker.buffers()
end, { desc = "buffer list", remap = true })
map("n", "<leader>bn", "<cmd>enew<CR>", { desc = "buffer create", remap = true })
map("n", "<leader>e", function()
Snacks.explorer()
end, { desc = "explorer", remap = true })
map("n", "<leader>s", "<cmd>set hlsearch!<cr>", { desc = "toggle hlsearch", remap = true })
map("n", "<leader>ff", function()
Snacks.picker.files()
end, { desc = "files", remap = true })
map("n", "<leader>fg", function()
Snacks.picker.grep()
end, { desc = "grep", remap = true })
map("n", "<leader>hc", function()
Snacks.picker.command_history()
end, { desc = "commands", remap = true })
map("n", "<leader>hn", "<cmd>messages<CR>", { desc = "notifications", remap = true })
map("n", "<leader>hs", function()
Snacks.picker.search_history()
end, { desc = "search", remap = true })
map(
"n",
"<leader>m",
'<cmd>execute "set colorcolumn=" . (&colorcolumn == "" ? "80,120" : "")<cr>',
{ desc = "toggle columns" }
)
map("n", "<leader>n", function()
vim.cmd("set number!")
vim.cmd('execute "set signcolumn=" . (&signcolumn == "yes" ? "no" : "yes")')
if Snacks.indent.enabled then
Snacks.indent.disable()
else
Snacks.indent.enable()
end
end, { desc = "toggle decorations", remap = true })
map("n", "<leader>t", function()
Snacks.terminal()
end, { desc = "terminal", remap = true })
map("n", "<leader>us", "<cmd>set spell!<cr>", { desc = "toggle spell", remap = true })
map("n", "<leader>uw", "<cmd>set wrap!<cr>", { desc = "toggle wrap", remap = true })