local M = {} local formatFx = function() require("conform").format({ async = true }) end local renameCurrentBuffer = function() local old_name = vim.fn.expand("%:p") local new_name = vim.fn.input("New name: ", vim.fn.expand("%:p:h") .. "/") if new_name == "" then print("No new name provided") return elseif new_name == old_name then return end vim.cmd("write") local success, err = os.rename(old_name, new_name) if not success then print("Error renaming file: " .. err) return end vim.cmd("edit " .. new_name) vim.cmd("bdelete " .. old_name) end vim.api.nvim_create_user_command("Rename", renameCurrentBuffer, {}) local leader_general = { { keys = "", cmd = ":Telescope find_files", desc = "Find Files" }, { keys = "/", cmd = ":Telescope live_grep", desc = "Grep Files" }, { keys = "-", cmd = ":split", desc = "Split to down" }, { keys = "\\", cmd = ":vsplit", desc = "Split to right" }, { keys = "|", cmd = ":vsplit", desc = "Split to right" }, { keys = "h", cmd = "h", desc = "Left Window" }, { keys = "n", cmd = "j", desc = "Down Window" }, { keys = "e", cmd = "k", desc = "Up Window" }, { keys = "i", cmd = "l", desc = "Right Window" }, } for _, map in ipairs(leader_general) do map.keys = "" .. map.keys table.insert(M, map) end local leader_q = { -- leader q: Quit { keys = "q", cmd = ":q", desc = "Quit" }, { keys = "Q", cmd = ":qa!", desc = "Force Quit" }, { keys = "w", cmd = ":wq", desc = "Write and Quit" }, { keys = "W", cmd = ":wall:qa!", desc = "Write all and Force Quit" }, } local leader_w = { -- leader w: Windows Management { keys = "h", cmd = "h", desc = "Left Window" }, { keys = "n", cmd = "j", desc = "Down Window" }, { keys = "e", cmd = "k", desc = "Up Window" }, { keys = "i", cmd = "l", desc = "Right Window" }, { keys = "-", cmd = ":split", desc = "Split to down" }, { keys = "|", cmd = ":vsplit", desc = "Split to right" }, { keys = "c", cmd = "c", desc = "Close Window" }, { keys = "o", cmd = "o", desc = "Close Other Windows" }, { keys = "r", cmd = "r", desc = "Rotate Windows" }, { keys = "R", cmd = "R", desc = "Reverse Rotate Windows" }, { keys = "t", cmd = "T", desc = "Move Window to New Tab" }, { keys = "H", cmd = ":vertical resize -5", desc = "Decrease Window Height" }, { keys = "N", cmd = ":resize +5", desc = "Increase Window Height" }, { keys = "E", cmd = ":vertical resize +5", desc = "Increase Window Width" }, { keys = "I", cmd = ":resize -5", desc = "Decrease Window Width" }, } local leader_f = { -- f: +files/find { keys = "f", cmd = ":Telescope fd", desc = "Find Files" }, { keys = "s", cmd = ":Telescope live_grep", desc = "Grep Files" }, { keys = "b", cmd = ":Telescope buffers", desc = "List Buffers" }, { keys = "e", cmd = ":NvimTreeToggle", desc = "Toggle File Explorer" }, { keys = "t", cmd = ":FloatermToggle", desc = "toggle visibility of the float terminal" }, { keys = "T", cmd = ":FloatermNew", desc = "Spawn a float terminal" }, { keys = "h", cmd = ":Telescope oldfiles", desc = "Search history files" }, { keys = "c", cmd = ":Telescope find_files cwd=~/.config/nvim", desc = "Search Config" }, { keys = "o", cmd = ":!open %", desc = "Open file in default program" }, { keys = "R", cmd = renameCurrentBuffer, desc = "Rename current file" }, } local leader_p = { -- leader p: Project { keys = "p", cmd = ":Telescope projects", desc = "List all Projects" }, { keys = "g", cmd = ":Telescope projects", desc = "List all Git Projects" }, { keys = "s", cmd = ":Telescope session-lens", desc = "List all sessions" }, } local leader_b = { -- b: +buffer { keys = "a", cmd = ":Alpha", desc = "Dashboard" }, { keys = "b", cmd = ":Telescope buffers", desc = "List Buffers" }, { keys = "d", cmd = ":bdelete", desc = "Delete Buffer" }, { keys = "h", cmd = ":bprevious", desc = "Previous Buffer" }, { keys = "i", cmd = ":bnext", desc = "Next Buffer" }, { keys = "H", cmd = ":bfirst", desc = "First Buffer" }, { keys = "I", cmd = ":blast", desc = "Last Buffer" }, { keys = "0", cmd = ":bfirst", desc = "First Buffer" }, { keys = "^", cmd = ":bfirst", desc = "First Buffer" }, { keys = "$", cmd = ":blast", desc = "Last Buffer" }, -- { keys = "s", cmd = ":Telescope buffers", desc = "Search buffers" }, } local leader_t = { -- t: +toggle/test { keys = "f", cmd = ":NvimTreeToggle", desc = "Toggle File Explorer" }, { keys = "F", cmd = ":FormatToggle", desc = "Toggle autoformat-on-save" }, { keys = "t", cmd = ":FloatermToggle", desc = "toggle visibility of the float terminal" }, } local leader_c = { -- c: +code/compile { keys = "r", cmd = ":RunCode", desc = "Run code" }, { keys = "e", cmd = ":Telescope diagnostics", desc = "Navigate errors/warnings" }, { keys = "f", cmd = formatFx, desc = "Format buffer" }, { keys = "s", cmd = ":Telescope treesitter", desc = "Search symbols" }, { keys = "S", cmd = ":Telescope grep_string", desc = "Search current symbol" }, } local leader_u = { -- u: +ui { keys = "i", cmd = ":Telescope colorscheme", desc = "Change colorscheme" }, } for _, map in ipairs(leader_q) do map.keys = "q" .. map.keys table.insert(M, map) end for _, map in ipairs(leader_w) do map.keys = "w" .. map.keys table.insert(M, map) end for _, map in ipairs(leader_f) do map.keys = "f" .. map.keys table.insert(M, map) end for _, map in ipairs(leader_b) do map.keys = "b" .. map.keys table.insert(M, map) end for _, map in ipairs(leader_c) do map.keys = "c" .. map.keys table.insert(M, map) end for _, map in ipairs(leader_t) do map.keys = "t" .. map.keys table.insert(M, map) end for _, map in ipairs(leader_u) do map.keys = "u" .. map.keys table.insert(M, map) end for _, map in ipairs(leader_p) do map.keys = "p" .. map.keys table.insert(M, map) end return M