local map = vim.keymap.set -- Leader vim.g.mapleader = " " vim.g.maplocalleader = "," local function verbose_toggle(value, name) local toggle = value == false if toggle == true then print("Enabled " .. name .. ".") else print("Disabled " .. name .. ".") end return toggle end -- open config map("n", " c", function() vim.cmd("cd ~/.config/nvim") vim.cmd("e " .. "init.lua") end, { desc = "Open neovim config file" }) -- insert navigation map("i", "", "I", { noremap = true }) map("i", "", "A", { noremap = true }) -- buffers map("n", " q", "q!", { noremap = true }) map("n", " Q", "qa!", { noremap = true }) map("n", "!", "spterm", { desc = "Open terminal" }) map("n", "", "make", { desc = "Make" }) -- better indenting map("v", "<", "", ">gv") map("v", "J", ":m '>+1gv=gv", { desc = "Move selected text up" }) map("v", "K", ":m '<-2gv=gv", { desc = "Move selected text down" }) map("x", " p", [["_dP]], { desc = "Paste while keeping the registry" }) map("n", "n", "nzzzv", { desc = "Keep cursor in middle with search" }) map("n", "N", "Nzzzv", { desc = "Keep cursor in middle with search" }) map("n", "J", "mzJ`z", { desc = "Move up next line with space in between" }) -- allow for use of system clipboard fast map({ "n", "v" }, " y", [["+y]]) map("n", " Y", [["+Y]]) map({ "n", "v" }, " P", [["+p]]) -- hide all local hidden = true -- flag vim.api.nvim_create_user_command("Hide", function() hidden = hidden == false vim.opt.showmode = hidden vim.opt.ruler = hidden vim.opt.showcmd = hidden vim.opt.laststatus = hidden and 2 or 0 end, {}) map("n", " x", "!cx %", { desc = "Toggle file as executable" }) map("n", " w", "write", { noremap = true }) map("n", ",s", function() vim.cmd.source() print("Sourced.") end, { noremap = true }) -- spelling map("n", " ts", function() vim.o.spell = verbose_toggle(vim.o.spell, "spelling") end, { noremap = true, desc = "Toggle spelling" }) map("n", "g", "z=1", { noremap = true, desc = "Correct word" }) map("n", " td", function() vim.diagnostic.enable(verbose_toggle(vim.diagnostic.is_enabled(), "diagnostics")) end, { desc = "Toggle diagnostics" }) -- editing map("n", " sf", ":%s/\\<\\>//gc", { desc = "Replace word under cursor in file" }) map("n", " sl", ":s/\\<\\>//g", { desc = "Replace word under cursor on current line" }) map("n", "]q", "cn", { desc = "Next item in quickfix", silent = true }) map("n", "[q", "cp", { desc = "Next item in quickfix", silent = true }) vim.api.nvim_create_user_command("Scratch", function() vim.cmd([[ e scratch setlocal buftype=nofile setlocal bufhidden=hide setlocal noswapfile ]]) end, {})