Files
dotfiles/nvim/.config/nvim/lua/romanzy/remap.lua
2026-06-25 22:13:51 +02:00

114 lines
3.9 KiB
Lua

--- @param mode string|string[]
--- @param lhs string|string[]
--- @param rhs string|function
--- @param opts? vim.keymap.set.Opts
local map = function(mode, lhs, rhs, opts)
if type(lhs) == "table" then
for _, cmd in ipairs(lhs) do
vim.keymap.set(mode, cmd, rhs, opts)
end
else
vim.keymap.set(mode, lhs, rhs, opts)
end
end
local function telescope_picker(picker)
return function()
require("telescope.builtin")[picker]()
end
end
map("n", "<leader><leader>r", ":source ~/.config/nvim/init.lua<CR>", { desc = "reload init.lua" })
vim.keymap.set("n", "<leader>dl", "<Cmd>Oil<CR>")
vim.keymap.set("n", "<leader>nl", vim.cmd.Ex)
vim.keymap.set("n", "<leader>ff", telescope_picker("find_files"))
vim.keymap.set("n", "<leader>fg", telescope_picker("live_grep"))
vim.keymap.set("n", "<leader>fb", telescope_picker("buffers"))
vim.keymap.set("n", "<leader>fh", telescope_picker("help_tags"))
vim.keymap.set("n", "<leader>s", ":set spell!<CR>")
vim.keymap.set("n", "<leader>sv", "<Cmd>vs<CR>")
vim.keymap.set("n", "<leader>sh", "<Cmd>sp<CR>")
vim.keymap.set("n", "<leader>se", "<C-w>=")
vim.keymap.set("n", "<leader>sc", "<C-w>c")
vim.keymap.set("n", "<leader>rh", "<Cmd>vertical resize -10<CR>")
vim.keymap.set("n", "<leader>rl", "<Cmd>vertical resize +10<CR>")
vim.keymap.set("n", "<leader>rj", "<Cmd>resize -5<CR>")
vim.keymap.set("n", "<leader>rk", "<Cmd>resize +5<CR>")
vim.keymap.set("n", "<leader>re", "<C-w>=")
vim.keymap.set("n", "<leader>bp", "<Cmd>bprevious<CR>")
vim.keymap.set("n", "<leader>bn", "<Cmd>bnext<CR>")
vim.keymap.set("n", "<leader>bd", "<Cmd>bdelete<CR>")
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>")
vim.keymap.set("n", "<C-h>", "<C-w>h")
vim.keymap.set("n", "<C-j>", "<C-w>j")
vim.keymap.set("n", "<C-k>", "<C-w>k")
vim.keymap.set("n", "<C-l>", "<C-w>l")
-- this is needed to disable refresh behavior for <C-l> in netrw
vim.api.nvim_create_autocmd("FileType", {
pattern = "netrw",
callback = function(ev)
vim.keymap.set("n", "<C-h>", "<C-w>h", { buffer = ev.buf })
vim.keymap.set("n", "<C-j>", "<C-w>j", { buffer = ev.buf })
vim.keymap.set("n", "<C-k>", "<C-w>k", { buffer = ev.buf })
vim.keymap.set("n", "<C-l>", "<C-w>l", { buffer = ev.buf })
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "oil",
callback = function(ev)
vim.keymap.set("n", "<C-h>", "<C-w>h", { buffer = ev.buf })
vim.keymap.set("n", "<C-j>", "<C-w>j", { buffer = ev.buf })
vim.keymap.set("n", "<C-k>", "<C-w>k", { buffer = ev.buf })
vim.keymap.set("n", "<C-l>", "<C-w>l", { buffer = ev.buf })
end,
})
-- hjkl supremacy
map({ "n", "i", "v", "x", "s", "o", "c" }, { "<left>", "<right>", "<up>", "<down>" }, function()
vim.notify('hjkl supremacy', vim.log.levels.ERROR)
end, { desc = "hjkl supremacy" })
vim.keymap.set("n", "g.", vim.diagnostic.open_float)
vim.keymap.set("n", "gl", vim.diagnostic.setloclist)
-- diagnostics only on error.
vim.keymap.set("n", "g]", function()
vim.diagnostic.goto_next({
severity = vim.diagnostic.severity.ERROR,
})
end)
vim.keymap.set("n", "g[", function()
vim.diagnostic.goto_prev({
severity = vim.diagnostic.severity.ERROR,
})
end)
local function rename_without_default()
vim.ui.input({
prompt = "New Name: ",
scope = "cursor",
}, function(input)
if not input or input == "" then
return
end
vim.lsp.buf.rename(input)
end)
end
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(ev)
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = ev.buf })
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = ev.buf })
vim.keymap.set("n", "grd", vim.lsp.buf.references, { buffer = ev.buf })
vim.keymap.set("n", "grn", rename_without_default, { buffer = ev.buf })
vim.keymap.set("i", "<C-Space>", vim.lsp.completion.get, { buffer = ev.buf })
end,
})