local utils = require("utils") utils.keymap_set("n", "", ":set wrap!", { desc = "Toggle line wrapping" }) utils.keymap_set("n", "lw", ":set wrap!", { desc = "Toggle line wrapping" }) utils.keymap_set("n", "", ":set invnumber", { desc = "Toggle line numbers" }) utils.keymap_set("n", "ln", ":set invnumber", { desc = "Toggle line numbers" }) utils.keymap_set("n", "/", ":set hlsearch! hlsearch?", { desc = "Toggle search highlighting" }) utils.keymap_set("n", "cs", ":nohlsearch", { desc = "Clear search highlighting" }) utils.keymap_set("n", "ws", ":set list!", { desc = "Toggle whitespace characters" }) -- Save and quit typos utils.keymap_set("c", "WQ", "wq", { desc = "Write and quit" }) utils.keymap_set("c", "Wq", "wq", { desc = "Write and quit" }) utils.keymap_set("c", "W", "w", { desc = "Write" }) utils.keymap_set("c", "Q", "q", { desc = "Quit" }) utils.keymap_set("c", "Q!", "q!", { desc = "Force quit" }) utils.keymap_set("c", "Qa", "qa", { desc = "Quit all" }) utils.keymap_set("c", "Qa!", "qa!", { desc = "Force quit all" }) utils.keymap_set("c", "QA", "qa", { desc = "Quit all" }) utils.keymap_set("c", "QA!", "qa!", { desc = "Force quit all" }) utils.keymap_set("c", "w;", "w", { desc = "Write" }) utils.keymap_set("c", "W;", "w", { desc = "Write" }) utils.keymap_set("c", "q;", "q", { desc = "Quit" }) utils.keymap_set("c", "Q;", "q", { desc = "Quit" }) -- Paste over utils.keymap_set("v", "pp", "p", { desc = "Paste" }) utils.keymap_set("v", "po", '"_dP', { desc = "Paste over and keep clipboard" }) -- Buffer nav utils.keymap_set("n", "gb", ":bnext", { desc = "Next buffer" }) utils.keymap_set("n", "gB", ":bprevious", { desc = "Previous buffer" }) -- Easy redo utils.keymap_set("n", "U", ":redo", { desc = "Redo" }) -- Make escape easier utils.keymap_set("i", "jk", "", { desc = "Escape insert" }) utils.keymap_set("i", "``", "", { desc = "Escape insert" }) utils.keymap_set("v", "``", "", { desc = "Escape visual" }) -- C-Space completion function _G.complete_space() if vim.fn.pumvisible() == 1 then return utils.t("") elseif utils.is_plugin_loaded("completion-nvim") then return utils.t("(completion_trigger)") elseif utils.is_plugin_loaded("nvim-compe") then return vim.fn["compe#complete"]() elseif utils.is_plugin_loaded("nvim-cmp") then return utils.t("(cmp_complete)") else return utils.t("") end end utils.keymap_set("i", "", "v:lua.complete_space()", { expr = true }) -- TODO: remove check when dropping v0.6.0 if vim.fn.has("nvim-0.7.0") == 1 then vim.api.nvim_create_user_command("TagsUpdate", "!ctags -R .", { desc = "Update ctags" }) vim.api.nvim_create_user_command("Todo", "grep TODO", { desc = "Search for TODO tags" }) vim.api.nvim_create_user_command("Spell", "setlocal spell! spelllang=en_us", { desc = "Toggle spelling" }) else vim.cmd("command! TagsUpdate !ctags -R .") vim.cmd("command! Todo grep TODO") vim.cmd("command Spell setlocal spell! spelllang=en_us") end -- Pop spelling completion for word under cursor utils.keymap_set("n", "s", "viwas", { desc = "Show spelling suggestions" }) -- Build on F5 utils.keymap_set("n", "", ":make", { desc = "Run make" })