-- Keymaps are automatically loaded on the VeryLazy event -- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua -- Add any additional keymaps here local Util = require("lazyvim.util") local function map(mode, lhs, rhs, opts) local keys = require("lazy.core.handler").handlers.keys ---@cast keys LazyKeysHandler -- do not create the keymap if a lazy keys handler exists if not keys.active[keys.parse({ lhs, mode = mode }).id] then opts = opts or {} opts.silent = opts.silent ~= false if opts.remap and not vim.g.vscode then opts.remap = nil end vim.keymap.set(mode, lhs, rhs, opts) end end map( "n", "xs", ":FloatermNew --disposable --name=duaroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= dua i", { desc = "Workspace Size (root dir)" } ) map( "n", "xS", ":FloatermNew --disposable --name=duabuffer --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= dua i", { desc = "Workspace Size (cwd)" } ) map( "n", "fx", ":FloatermNew --disposable --name=xplrroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= xplr", { desc = "Xplr (root dir)" } ) map( "n", "fX", ":FloatermNew --disposable --name=xplrbuffer --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= xplr", { desc = "Xplr (cwd)" } ) map( "n", "gg", ":FloatermNew --disposable --name=lazygitroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= lazygit", { desc = "Lazygit (root dir)" } ) map( "n", "gG", ":FloatermNew --disposable --name=lazygitbuffer --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= lazygit", { desc = "Lazygit (cwd)" } ) map( "n", "fd", ":FloatermNew --disposable --name=lazydocker --opener=edit --titleposition=center --height=0.85 --width=0.85 lazydocker", { desc = "Lazydocker" } ) map("n", "T", ":Telescope floaterm", { desc = "Terminals" }) map("n", "sz", ":Telescope zoxide list", { desc = "Zoxide" }) map("n", "sL", ":Telescope luasnip", { desc = "Snippets (Luasnip)" }) map("n", "sp", ":Telescope lazy", { desc = "Plugins (Lazy)" }) map("n", "si", ":Telescope import", { desc = "Imports" }) map( "n", "ft", ":FloatermNew --name=termroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd=", { desc = "New Terminal (root dir)" } ) map( "n", "fT", ":FloatermNew --name=termcwd --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd=", { desc = "New Terminal (cwd)" } ) map("n", "", ":FloatermToggle", { desc = "Toggle Terminal" }) map("t", "", ":FloatermToggle", { desc = "Toggle Terminal", nowait = true }) vim.keymap.set("n", "gU", vim.cmd.UndotreeToggle, { noremap = true, silent = true, desc = "Toggle Undotree" }) vim.keymap.set("n", "", "PickColor", { noremap = true, silent = true, desc = "Pick Color" }) vim.keymap.set("i", "", "PickColorInsert", { noremap = true, silent = true, desc = "Pick Color" }) -- Open compiler vim.keymap.set("n", "ccc", "CompilerOpen", { noremap = true, silent = true, desc = "Open Compiler" }) vim.keymap.set("n", "ccR", function() vim.cmd("CompilerStop") vim.cmd("CompilerRedo") end, { noremap = true, silent = true, desc = "Redo Compiler" }) -- Toggle compiler results vim.keymap.set( "n", "ccr", "CompilerToggleResults", { noremap = true, silent = true, desc = "Toggle Compiler Results" } ) vim.api.nvim_set_keymap( "n", "cps", "lua require('package-info').show({ force = true })", { silent = true, noremap = true, desc = "Show Package Versions" } ) vim.api.nvim_set_keymap( "n", "cpu", "lua require('package-info').update()", { silent = true, noremap = true, desc = "Update Package" } ) vim.api.nvim_set_keymap( "n", "cpr", "lua require('package-info').delete()", { silent = true, noremap = true, desc = "Remove Package" } ) vim.api.nvim_set_keymap( "n", "cpv", "lua require('package-info').change_version()", { silent = true, noremap = true, desc = "Change Package Version" } ) vim.api.nvim_set_keymap( "n", "cpn", "lua require('package-info').install()", { silent = true, noremap = true, desc = "Install New Dependency" } ) vim.keymap.set("n", "", "zz") vim.keymap.set("n", "", "zz") vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "N", "Nzzzv") local function goto_prev_node() local ts_utils = require("nvim-treesitter.ts_utils") local node = ts_utils.get_node_at_cursor() if not node then return end local dest_node = ts_utils.get_previous_node(node, true, true) if not dest_node then local cur_node = node:parent() while cur_node do dest_node = ts_utils.get_previous_node(cur_node, false, false) if dest_node then break end cur_node = cur_node:parent() end end if not dest_node then return end ts_utils.goto_node(dest_node) end local function goto_next_node() local ts_utils = require("nvim-treesitter.ts_utils") local node = ts_utils.get_node_at_cursor() if not node then return end local dest_node = ts_utils.get_next_node(node, true, true) if not dest_node then local cur_node = node:parent() while cur_node do dest_node = ts_utils.get_next_node(cur_node, false, false) if dest_node then break end cur_node = cur_node:parent() end end if not dest_node then return end ts_utils.goto_node(dest_node) end local function goto_parent_node() local ts_utils = require("nvim-treesitter.ts_utils") local node = ts_utils.get_node_at_cursor() if not node then return end local dest_node = node:parent() if not dest_node then return end ts_utils.goto_node(dest_node) end local function goto_child_node() local ts_utils = require("nvim-treesitter.ts_utils") local node = ts_utils.get_node_at_cursor() if not node then return end local dest_node = ts_utils.get_named_children(node)[1] if not dest_node then return end ts_utils.goto_node(dest_node) end local keyopts = { noremap = true, silent = true } vim.keymap.set({ "n", "v", "o", "i" }, "", goto_parent_node, keyopts) vim.keymap.set({ "n", "v", "o", "i" }, "", goto_child_node, keyopts) vim.keymap.set({ "n", "v", "o", "i" }, "", goto_next_node, keyopts) vim.keymap.set({ "n", "v", "o", "i" }, "", goto_prev_node, keyopts) vim.keymap.set({ "n", "v", "o", "i" }, "", goto_parent_node, keyopts) vim.keymap.set({ "n", "v", "o", "i" }, "", goto_child_node, keyopts) vim.keymap.set({ "n", "v", "o", "i" }, "", goto_next_node, keyopts) vim.keymap.set({ "n", "v", "o", "i" }, "", goto_prev_node, keyopts) -- DEFAULT_KEYMAPS: -- Half-window movements: vim.keymap.set({ "n", "x" }, "", "lua Scroll('', 1, 1)") vim.keymap.set({ "n", "x" }, "", "lua Scroll('', 1, 1)") -- Page movements: vim.keymap.set({ "n", "x" }, "", "lua Scroll('', 1, 1)") vim.keymap.set({ "n", "x" }, "", "lua Scroll('', 1, 1)") vim.keymap.set({ "n", "x" }, "", "lua Scroll('', 1, 1)") vim.keymap.set({ "n", "x" }, "", "lua Scroll('', 1, 1)") -- EXTRA_KEYMAPS: -- Start/end of file and line number movements: vim.keymap.set({ "n", "x" }, "gg", "lua Scroll('gg')") vim.keymap.set({ "n", "x" }, "G", "lua Scroll('G', 0, 1)") -- Start/end of line: vim.keymap.set({ "n", "x" }, "0", "lua Scroll('0')") vim.keymap.set({ "n", "x" }, "^", "lua Scroll('^')") vim.keymap.set({ "n", "x" }, "$", "lua Scroll('$', 0, 1)") -- Paragraph movements: vim.keymap.set({ "n", "x" }, "{", "lua Scroll('{')") vim.keymap.set({ "n", "x" }, "}", "lua Scroll('}')") -- Previous/next search result: vim.keymap.set("n", "n", "lua Scroll('n', 1)") vim.keymap.set("n", "N", "lua Scroll('N', 1)") vim.keymap.set("n", "*", "lua Scroll('*', 1)") vim.keymap.set("n", "#", "lua Scroll('#', 1)") vim.keymap.set("n", "g*", "lua Scroll('g*', 1)") vim.keymap.set("n", "g#", "lua Scroll('g#', 1)") -- Previous/next cursor location: vim.keymap.set("n", "", "lua Scroll('', 1)") vim.keymap.set("n", "", "lua Scroll('1', 1)") -- Screen scrolling: vim.keymap.set("n", "zz", "lua Scroll('zz', 0, 1)") vim.keymap.set("n", "zt", "lua Scroll('zt', 0, 1)") vim.keymap.set("n", "zb", "lua Scroll('zb', 0, 1)") vim.keymap.set("n", "z.", "lua Scroll('z.', 0, 1)") vim.keymap.set("n", "z", "lua Scroll('zt^', 0, 1)") vim.keymap.set("n", "z-", "lua Scroll('z-', 0, 1)") vim.keymap.set("n", "z^", "lua Scroll('z^', 0, 1)") vim.keymap.set("n", "z+", "lua Scroll('z+', 0, 1)") vim.keymap.set("n", "", "lua Scroll('', 0, 1)") vim.keymap.set("n", "", "lua Scroll('', 0, 1)") -- Horizontal screen scrolling: vim.keymap.set("n", "zH", "lua Scroll('zH')") vim.keymap.set("n", "zL", "lua Scroll('zL')") vim.keymap.set("n", "zs", "lua Scroll('zs')") vim.keymap.set("n", "ze", "lua Scroll('ze')") vim.keymap.set("n", "zh", "lua Scroll('zh', 0, 1)") vim.keymap.set("n", "zl", "lua Scroll('zl', 0, 1)") -- EXTENDED_KEYMAPS: -- Up/down movements: vim.keymap.set({ "n", "x" }, "k", "lua Scroll('k', 0, 1)") vim.keymap.set({ "n", "x" }, "j", "lua Scroll('j', 0, 1)") vim.keymap.set({ "n", "x" }, "", "lua Scroll('k', 0, 1)") vim.keymap.set({ "n", "x" }, "", "lua Scroll('j', 0, 1)") -- Left/right movements: vim.keymap.set({ "n", "x" }, "h", "lua Scroll('h', 0, 1)") vim.keymap.set({ "n", "x" }, "l", "lua Scroll('l', 0, 1)") vim.keymap.set({ "n", "x" }, "", "lua Scroll('h', 0, 1)") vim.keymap.set({ "n", "x" }, "", "lua Scroll('l', 0, 1)") -- SCROLL_WHEEL_KEYMAPS: vim.keymap.set({ "n", "x" }, "", "lua Scroll('')") vim.keymap.set({ "n", "x" }, "", "lua Scroll('')") vim.keymap.set("n", "", "noh", { noremap = true, silent = true, desc = "Clear Search" }) vim.keymap.set("n", "]b", require("goto-breakpoints").next, { desc = "Next Breakpoint" }) vim.keymap.set("n", "[b", require("goto-breakpoints").prev, { desc = "Prev Breakpoint" }) vim.keymap.set("n", "dbn", require("goto-breakpoints").next, { desc = "Next Breakpoint" }) vim.keymap.set("n", "dbp", require("goto-breakpoints").prev, { desc = "Prev Breakpoint" }) vim.keymap.set("n", "dbs", require("goto-breakpoints").stopped, { desc = "Stopped Breakpoint" }) -- vim.keymap.set({ "n", "o", "x" }, "w", "lua require('spider').motion('w')", { desc = "Spider-w" }) -- vim.keymap.set({ "n", "o", "x" }, "e", "lua require('spider').motion('e')", { desc = "Spider-e" }) -- vim.keymap.set({ "n", "o", "x" }, "b", "lua require('spider').motion('b')", { desc = "Spider-b" }) -- vim.keymap.set({ "n", "o", "x" }, "ge", "lua require('spider').motion('ge')", { desc = "Spider-ge" })