-- local ok, reset = pcall(require, "nvim-reset") -- if not ok then -- vim.notify("nvim-reset is not installed", "warn") -- return -- end -- reset.setup({ -- ignore_maps = { -- --- open url [[ -- { mode = { "n", "x", "v" }, lhs = "gx" }, -- --- ]] -- --- comment toggle [[ -- { mode = { "n", "x" }, lhs = "gcc" }, -- { mode = "x", lhs = "gc" }, -- { mode = "o", lhs = "gc" }, -- --- ]] -- -- --- macro [[ -- { mode = { "n", "x" }, lhs = "q" }, -- { mode = { "n", "x" }, lhs = "Q" }, -- { mode = { "n", "x" }, lhs = "@" }, -- { mode = { "n", "x" }, lhs = "g@" }, -- --- ]] -- }, -- }) -- vim.print("keymap") vim.g.completion_trigger_character = "." vim.keymap.set("n", ";", ":") vim.keymap.set("n", ":", ";") -- hjkl vim.keymap.set({ "n", "x" }, "j", function() if vim.v.count > 0 or #vim.fn.reg_recording() > 0 or #vim.fn.reg_executing() > 0 then return "j" end return "gj" end, { expr = true }) vim.keymap.set({ "n", "x" }, "k", function() if vim.v.count > 0 or #vim.fn.reg_recording() > 0 or #vim.fn.reg_executing() > 0 then return "k" end return "gk" end, { expr = true }) -- disable keys -- vim.keymap.set("n", "H", "") -- vim.keymap.set("n", "J", "") -- vim.keymap.set("n", "K", "") -- vim.keymap.set("n", "L", "") vim.keymap.set({ "n", "v" }, "s", "") vim.keymap.set({ "n", "v" }, "S", "") vim.keymap.set("n", "gh", "") vim.keymap.set("n", "gj", "") vim.keymap.set("n", "gk", "") vim.keymap.set("n", "gl", "") -- remap H M L vim.keymap.set("n", "gH", "H") vim.keymap.set("n", "gM", "M") vim.keymap.set("n", "gL", "L") -- split window vim.keymap.set("n", "ss", "split") vim.keymap.set("n", "sv", "vsplit") -- move window vim.keymap.set("n", "sh", "h") vim.keymap.set("n", "sj", "j") vim.keymap.set("n", "sk", "k") vim.keymap.set("n", "sl", "l") -- tab management vim.keymap.set("n", "", "tabnext", { silent = true }) vim.keymap.set("n", "", "tabprevious", { silent = true }) vim.keymap.set("n", "th", "tabfirst", { silent = true }) vim.keymap.set("n", "tj", "tabprevious", { silent = true }) vim.keymap.set("n", "tk", "tabnext", { silent = true }) vim.keymap.set("n", "tl", "tablast", { silent = true }) vim.keymap.set("n", "tt", "tabe .", { silent = true }) vim.keymap.set("n", "tq", "tabclose", { silent = true }) -- jj -> -- vim.keymap.set("i", "jj", "") -- arrow key prevent stopping undo block -- vim.keymap.set("i", "", "u") -- vim.keymap.set("i", "", "u") -- disable s because s = cl vim.keymap.set("n", "s", "") -- terminal mode vim.keymap.set("t", [[]], [[]]) -- command mode --- Emacs style from yutkat vim.keymap.set("c", "", "", { silent = false }) if not vim.g.vscode then vim.keymap.set("c", "", "", { silent = false }) end vim.keymap.set("c", "", "", { silent = false }) vim.keymap.set("c", "", "", { silent = false }) vim.keymap.set("c", "", "", { silent = false }) -- regexp vim.keymap.set("x", "r", 'y:%s/"//g') vim.keymap.set("n", "r", 'yiw:%s/"//g') -- toggle 0 made by ycino vim.keymap.set("n", "0", function() return string.match((vim.fn.getline(".") --[[@as string]]):sub(0, vim.fn.col(".") - 1), "^%s+$") and "0" or "^" end, { expr = true, silent = true }) -- Automatically indent with i and A made by ycino vim.keymap.set("n", "i", function() return vim.fn.len(vim.fn.getline(".")) ~= 0 and "i" or '"_cc' end, { expr = true, silent = true }) vim.keymap.set("n", "A", function() return vim.fn.len(vim.fn.getline(".")) ~= 0 and "A" or '"_cc' end, { expr = true, silent = true }) vim.iter({ "n", "x" }):each(function(mode) vim.keymap.set( mode, "b", vim.fn.maparg("gx", mode, false, true).callback, { desc = "Open URL under cursor in browser" } ) vim.keymap.del(mode, "gx") end) -- custom -- vim.keymap.set("n", "ss", vim.cmd.ToggleStatusBar) -- tips -- vim.keymap.set({ "n", "v" }, "gy", '"+y') -- yank to clipboard vim.keymap.set("n", "Y", "y$") -- yank to end of line -- vim.keymap.set("n", "gY", '"+y$') -- yank to end of line and to clipboard vim.keymap.set({ "n", "v" }, "x", '"_x') -- delete without yank vim.keymap.set({ "n", "v" }, "X", '"_d$') -- delete to end of line without yank vim.keymap.set({ "n", "v" }, "x", vim.cmd.cclose) vim.keymap.set("n", "", "nohlsearch") vim.keymap.set("n", "gq", "nohlsearch") vim.keymap.set("n", "a", "ggVG") vim.cmd( [[cnoreabbrev s getcmdtype() .. getcmdline() ==# ':s' ? [getchar(), ''][1] .. "%s//g" : 's']] ) -- tips from monaqa san: https://zenn.dev/vim_jp/articles/2024-06-05-vim-middle-class-features for _, quote in ipairs({ '"', "'", "`" }) do vim.keymap.set({ "x", "o" }, "a" .. quote, "2i" .. quote) end vim.keymap.set("", "", "") vim.keymap.set("n", "g", "QuickLook")