local map = vim.keymap.set local wk = require("which-key") -- better up/down map({ "n", "x" }, "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) map({ "n", "x" }, "", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) map({ "n", "x" }, "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) map({ "n", "x" }, "", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) -- Move to window using the hjkl keys map("n", "", "h", { desc = "Go to left window", remap = true }) map("n", "", "j", { desc = "Go to lower window", remap = true }) map("n", "", "k", { desc = "Go to upper window", remap = true }) map("n", "", "l", { desc = "Go to right window", remap = true }) -- Resize window using arrow keys map("n", "", "resize +2", { desc = "Increase window height" }) map("n", "", "resize -2", { desc = "Decrease window height" }) map("n", "", "vertical resize -2", { desc = "Decrease window width" }) map("n", "", "vertical resize +2", { desc = "Increase window width" }) -- Move Lines map("n", "", "m .+1==", { desc = "Move down" }) map("n", "", "m .-2==", { desc = "Move up" }) map("i", "", "m .+1==gi", { desc = "Move down" }) map("i", "", "m .-2==gi", { desc = "Move up" }) map("v", "", ":m '>+1gv=gv", { desc = "Move down" }) map("v", "", ":m '<-2gv=gv", { desc = "Move up" }) -- buffers map("n", "", "bprevious", { desc = "Prev buffer" }) map("n", "", "bnext", { desc = "Next buffer" }) -- Clear search with map({ "i", "n" }, "", "noh", { desc = "Escape and clear hlsearch" }) -- save file map({ "i", "x", "n", "s" }, "", "w", { desc = "Save file" }) --keywordprg map("n", "K", "norm! K", { desc = "Keywordprg" }) -- better indenting map("v", "<", "", ">gv") wk.register({["f"] = { name = "File" }}) -- new file map("n", "fn", "enew", { desc = "New File" }) map("n", "xl", "lopen", { desc = "Location List" }) map("n", "xq", "copen", { desc = "Quickfix List" }) map("n", "ww", "p", { desc = "Other window", remap = true }) map("n", "wd", "c", { desc = "Delete window", remap = true }) map("n", "w-", "s", { desc = "Split window below", remap = true }) map("n", "w|", "v", { desc = "Split window right", remap = true }) map("n", "-", "s", { desc = "Split window below", remap = true }) map("n", "|", "v", { desc = "Split window right", remap = true }) -- tabs wk.register({[""] = { name = "Tabs" }}) map("n", "l", "tablast", { desc = "Last Tab" }) map("n", "f", "tabfirst", { desc = "First Tab" }) map("n", "", "tabnew", { desc = "New Tab" }) map("n", "]", "tabnext", { desc = "Next Tab" }) map("n", "d", "tabclose", { desc = "Close Tab" }) map("n", "[", "tabprevious", { desc = "Previous Tab" }) -- NeoTree map("n", "fe", function() require("neo-tree.command").execute({ toggle = true, dir = vim.loop.cwd() }) end, { desc = "NeoTree" } ) map("n", "e", "fe", { desc = "NeoTree", remap = true }) map("n", "ge", function() require("neo-tree.command").execute({ source = "git_status", toggle = true }) end, { desc = "Git explorer" } ) map("n", "be", function() require("neo-tree.command").execute({ source = "buffers", toggle = true }) end, { desc = "Buffer explorer" } ) map({"n", "v"}, "cf", function() require("conform").format() end, { desc = "Format Code" } )