vim.g.mapleader = " " vim.keymap.set("n", "pv", vim.cmd.Ex) vim.keymap.set("n", "", ":Neotree right filesystem toggle") vim.keymap.set("v", "J", ":m '>+1gv=gv") vim.keymap.set("v", "K", ":m '<-2gv=gv") vim.keymap.set("n", "J", "mzJ`z") vim.keymap.set({"n","v"}, "", "zz") vim.keymap.set({"n","v"}, "", "zz") vim.keymap.set("n", "", "zz") vim.keymap.set("n", "", "zz") vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "N", "Nzzzv") vim.keymap.set("n", "", "") vim.keymap.set("n", "", "") vim.keymap.set("n", "", "") -- terminal remaps vim.keymap.set("t", "", "", { noremap = true, silent = true }) -- vim.keymap.set("n", ";", ":vsplit term://left", { noremap = true, silent = true }) local term_buf = nil function toggleTerminal() -- If we already have a terminal buffer and it's hidden, reopen it if term_buf and vim.api.nvim_buf_is_valid(term_buf) then -- If the terminal is open in the current window, hide it if vim.api.nvim_get_current_buf() == term_buf then vim.cmd("close") else -- Otherwise, open the terminal buffer in a split at the bottom vim.cmd("belowright split | resize " .. math.floor(vim.o.lines * 0.25)) vim.api.nvim_set_current_buf(term_buf) vim.cmd("startinsert") end else -- If no terminal buffer exists, create a new one vim.cmd("belowright split | resize " .. math.floor(vim.o.lines * 0.25)) vim.cmd("terminal") vim.cmd("startinsert") term_buf = vim.api.nvim_get_current_buf() -- Store the terminal buffer ID end -- Check if the current buffer is a terminal end vim.keymap.set("n", "", toggleTerminal, { noremap = true, silent = true }) vim.keymap.set("v", "", toggleTerminal, { noremap = true, silent = true }) vim.keymap.set("i", "", toggleTerminal, { noremap = true, silent = true }) vim.keymap.set("t", "", toggleTerminal, { noremap = true, silent = true }) -- Terminal mode mappings (Alt + hjkl and Alt + Arrow Keys) vim.api.nvim_set_keymap('t', '', 'h', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'j', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'k', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'l', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'h', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'j', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'k', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'l', { noremap = true, silent = true }) -- Insert mode mappings (Alt + hjkl and Alt + Arrow Keys) vim.api.nvim_set_keymap('i', '', 'h', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'j', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'k', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'l', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'h', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'j', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'k', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'l', { noremap = true, silent = true }) -- Normal mode mappings (Alt + hjkl and Alt + Arrow Keys) vim.api.nvim_set_keymap('n', '', 'h', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'j', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'k', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'l', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'h', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'j', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'k', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'l', { noremap = true, silent = true }) -- Resize splits with Ctrl+Shift+h/j/k/l vim.api.nvim_set_keymap('n', '', ':vertical resize +2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', ':resize -2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', ':resize +2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', ':vertical resize -2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', ':vertical resize +2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', ':horizontal resize -2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', ':resize +2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', ':vertical resize -2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('v', '', ':vertical resize +2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('v', '', ':resize -2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('v', '', ':resize +2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('v', '', ':vertical resize -2', { noremap = true, silent = true }) -- swap between windows vim.keymap.set("n", ";", "w") vim.keymap.set("v", ";", "w") vim.api.nvim_set_keymap("t", "", "w", { noremap = true, silent = true }) -- greatest remap ever vim.keymap.set("x", "p", [["_dP]]) -- next greatest remap ever : asbjornHaland vim.keymap.set({"n", "v"}, "y", [["+y]]) vim.keymap.set("n", "Y", [["+Y]]) vim.keymap.set({"n", "v"}, "d", [["_d]]) -- This is going to get me cancelled vim.keymap.set("i", "", "") vim.keymap.set("n", "Q", "") vim.keymap.set("n", "f", vim.lsp.buf.format) vim.keymap.set("n", "", "cnextzz") vim.keymap.set("n", "", "cprevzz") vim.keymap.set("n", "k", "lnextzz") vim.keymap.set("n", "j", "lprevzz") vim.keymap.set("n", "s", [[:%s/\<\>//gI]]) vim.keymap.set("n", "so", function() vim.cmd("so") end) -- Function to get config directory based on OS local function get_config_dir() if vim.fn.has('win32') == 1 then return vim.fn.stdpath('config') else return '~/.config/nvim' end end -- Create the mapping vim.keymap.set('n', 'cd', function() -- Get the config directory local config_dir = get_config_dir() -- Change to the config directory vim.cmd('cd ' .. config_dir) -- Open file explorer in the config directory vim.cmd('Ex ' .. config_dir) end, { desc = 'Jump to Neovim config directory' }) vim.g.is_maximized = false vim.g.original_height = 0 vim.g.original_width = 0 function ToggleZen() if vim.g.is_maximized then -- Restore original size if vim.g.original_height > 0 then vim.cmd('resize ' .. vim.g.original_height) end if vim.g.original_width > 0 then vim.cmd('vertical resize ' .. vim.g.original_width) end vim.g.is_maximized = false else -- Save current dimensions vim.g.original_height = vim.fn.winheight(0) vim.g.original_width = vim.fn.winwidth(0) -- Check if the buffer is a terminal if vim.bo.buftype == "terminal" then -- Maximize height only vim.cmd('resize') else -- Maximize both height and width vim.cmd('resize') vim.cmd('vertical resize') end vim.g.is_maximized = true end end vim.keymap.set('n', '', ToggleZen, { desc = 'Zen Mode' }) vim.keymap.set('v', '', ToggleZen, { desc = 'Zen Mode' }) vim.keymap.set('i', '', ToggleZen, { desc = 'Zen Mode' }) vim.keymap.set('t', '', ToggleZen, { desc = 'Zen Mode' })