-- Load Keybindings from VIM local vim_mappings = os.getenv("HOME") .. "/.vim/key_maps.vim" if vim.loop.fs_stat(vim_mappings) then vim.cmd("source " .. vim_mappings) end vim.keymap.set({ "n" }, "", " %y+ ", { desc = "Copy entire content of the current buffer" }) vim.keymap.set("n", "fn", "enew", { desc = "Create new file/buffer" }) -- Remap for dealing with word wrap vim.keymap.set({ "n", "x" }, "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) vim.keymap.set({ "n", "x" }, "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) -- Move to window using the hjkl keys vim.keymap.set("n", "", "h", { desc = "Go to left window", remap = true }) vim.keymap.set("n", "", "j", { desc = "Go to lower window", remap = true }) vim.keymap.set("n", "", "k", { desc = "Go to upper window", remap = true }) vim.keymap.set("n", "", "l", { desc = "Go to right window", remap = true }) -- Resize window using arrow keys vim.keymap.set("n", "", "resize +2", { desc = "Increase window height" }) vim.keymap.set("n", "", "resize -2", { desc = "Decrease window height" }) vim.keymap.set("n", "", "vertical resize -2", { desc = "Decrease window width" }) vim.keymap.set("n", "", "vertical resize +2", { desc = "Increase window width" }) -- Move Lines vim.keymap.set("n", "", "m .+1==", { desc = "Move line down" }) vim.keymap.set("n", "", "m .-2==", { desc = "Move line up" }) vim.keymap.set("v", "", ":m '>+1gv=gv", { desc = "Move line down" }) vim.keymap.set("v", "", ":m '<-2gv=gv", { desc = "Move line up" }) -- Traverse Buffer vim.keymap.set("n", "", "bnext", { desc = "Switch to next buffer" }) vim.keymap.set("n", "", "bprevious", { desc = "Switch to previous buffer" }) -- Save file vim.keymap.set({ "i", "x", "n", "s" }, "", "w", { desc = "Save file" }) vim.keymap.set({ "i", "x", "n", "s" }, "", "wqa", { desc = "Save all files and Quit Neovim" }) -- Close Current Buffer vim.keymap.set({ "n", "v" }, "bx", function() if vim.bo.modified then vim.cmd.write() end vim.cmd("bdelete") end, { desc = "Save and close current buffer" }) -- Traverse quickfix vim.keymap.set("n", "[q", vim.cmd.cprev, { desc = "Previous quickfix" }) vim.keymap.set("n", "]q", vim.cmd.cnext, { desc = "Next quickfix" }) -- Clear searches vim.keymap.set({ "i", "n" }, "", "noh", { desc = "Escape and clear hlsearch" }) vim.keymap.set("n", "/", "nohlsearchdiffupdatenormal! ", { desc = "Redraw / clear hlsearch / diff update" }) vim.keymap.set("n", "n", "'Nn'[v:searchforward].'zv'", { expr = true, desc = "Next search result" }) vim.keymap.set("x", "n", "'Nn'[v:searchforward]", { expr = true, desc = "Next search result" }) vim.keymap.set("o", "n", "'Nn'[v:searchforward]", { expr = true, desc = "Next search result" }) vim.keymap.set("n", "N", "'nN'[v:searchforward].'zv'", { expr = true, desc = "Prev search result" }) vim.keymap.set("x", "N", "'nN'[v:searchforward]", { expr = true, desc = "Prev search result" }) vim.keymap.set("o", "N", "'nN'[v:searchforward]", { expr = true, desc = "Prev search result" })