vim.keymap.set("n", "", ":w ++p", { desc = "save file" }) vim.keymap.set("v", "", ":w ++p", { desc = "save file" }) vim.keymap.set("i", "", ":w ++pa", { desc = "save file" }) vim.keymap.set("n", ";", ":", { desc = "command with ;" }) vim.keymap.set("v", ";", ":", { desc = "command with ;" }) vim.keymap.set("n", "q", ":bd", { desc = "close buffer" }) vim.keymap.set("n", "Q", ":%bd", { desc = "close all buffers" }) vim.keymap.set({ "n", "v" }, "d", '"_d', { desc = "delete without cut" }) vim.keymap.set({ "n", "v" }, "c", '"_c', { desc = "ddelete without cutelete without cut" }) vim.keymap.set({ "v", "n" }, "vv", "", { desc = "vv for visual block" }) vim.keymap.set("i", "jj", "", { silent = true, desc = "back to normal with jj" }) -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier -- for people to discover. Otherwise, you normally need to pres , which -- is not what someone will guess without a bit more experience. -- -- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping -- or just use to exit terminal mode vim.keymap.set("t", "", "", { desc = "Exit terminal mode" }) -- TIP: Disable arrow keys in normal mode vim.keymap.set("n", "", 'echo "Use h to move!!"') vim.keymap.set("n", "", 'echo "Use l to move!!"') vim.keymap.set("n", "", 'echo "Use k to move!!"') vim.keymap.set("n", "", 'echo "Use j to move!!"') -- Keybindings to make split navigation easier. -- Use CTRL+ to switch between windows -- -- See `:help wincmd` for a list of all window commands vim.keymap.set("n", "", "", { desc = "Move focus to the left window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the right window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the lower window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the upper window" }) vim.keymap.set("v", "", function() -- get contents of visual selection -- handle unpack deprecation table.unpack = table.unpack or unpack function get_visual() local _, ls, cs = table.unpack(vim.fn.getpos("v")) local _, le, ce = table.unpack(vim.fn.getpos(".")) return vim.api.nvim_buf_get_text(0, ls - 1, cs - 1, le - 1, ce, {}) end local pattern = table.concat(get_visual()) -- escape regex and line endings pattern = vim.fn.substitute(vim.fn.escape(pattern, "^$.*\\/~[]"), "\n", "\\n", "g") -- send parsed substitution command to command line vim.api.nvim_input(":%s/" .. pattern .. "//") end)