-- 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)