--- Tab mappings --- vim.keymap.set("n", "tn", vim.cmd.tabnew) vim.keymap.set("n", "tq", vim.cmd.tabclose) -- switch tabs with Ctrl+PgUp/Ctrl+PgDwn (default vim mapping) --- Buffer mappings --- -- Center cursorline vim.keymap.set("n", "", "zz") -- Save buffer vim.keymap.set("n", "", function () vim.cmd.write({ mods = { silent = true, }, }) end) -- Cycle buffers -- TODO: change to :bnext and :bprev vim.keymap.set("n", "", vim.cmd.bnext) vim.keymap.set("n", "", vim.cmd.bprev) --- Navigation --- vim.keymap.set("n", "", "zz") vim.keymap.set("n", "", "zz") vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "N", "Nzzzv") --- General mappings --- -- yank/put using named register vim.keymap.set({ "n", "x", }, "y", '"+y') vim.keymap.set({ "n", "x", }, "p", '"+p') vim.keymap.set({ "n", "x", }, "P", '"+P') vim.keymap.set({ "n", "x", }, "+", function () vim.fn.setreg("+", vim.fn.getreg('"')) end) -- Allow exiting insert mode in terminal by hitting vim.keymap.set("t", "", "") -- Use :diffput/get instead of normal one to allow staging visual selection vim.keymap.set("n", "dp", vim.cmd.diffput) vim.keymap.set("x", "dp", ":diffput") vim.keymap.set("n", "do", vim.cmd.diffget) vim.keymap.set("x", "do", ":diffget") vim.keymap.set("i", "", vim.cmd.fclose) -- Remove default mappings vim.keymap.set("", "", "") -- Remove right-click menu items vim.cmd.aunmenu({ "PopUp.-1-", }) vim.cmd.aunmenu({ "PopUp.How-to\\ disable\\ mouse", }) -- Shift+Tab to unindent vim.keymap.set("i", "", function () local cursor = vim.api.nvim_win_get_cursor(0) local row, col = cursor[1], cursor[2] vim.cmd.normal("<<") vim.api.nvim_win_set_cursor(0, { row, col - vim.o.shiftwidth, }) end)