97 lines
3.4 KiB
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 })
|