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 map 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 vim.keymap.set(mode, lhs, rhs, opts) end end local opts = { noremap = true, silent = true } local term_opts = { silent = true } -- crimes against humanity, but I don't care map("n", "j", "h", opts) map("n", "l", "k", opts) map("n", "k", "j", opts) map("n", ";", "l", opts) map("v", "j", "h", opts) map("v", "k", "j", opts) map("v", "l", "k", opts) map("v", ";", "l", opts) -- debug map("n", "db", ':lua require("dap").toggle_breakpoint()', { desc = "Toggle breakpoint" }) map("n", "do", ':lua require("dap").step_over()', { desc = "Step over" }) map("n", "di", ':lua require("dap").step_into()', { desc = "Step into" }) map("n", "dc", ':lua require("dap").continue()', { desc = "Continue" }) map("n", "dt", ':lua require("dapui").toggle() :lua require("dap").continue() ', { desc = "Open DAP" }) map("n", "dq", ':lua require("dap").close() :lua require("dapui").toggle()', { desc = "Close DAP" }) -- file tree map("n", "", ":lua require('nvim-tree.api').tree.toggle()", opts) -- toggle terminal map("n", "", ":lua require('toggleterm').toggle(1)", {desc = "Toggle Terminal"}) -- tab switching map("n", "", ":BufferLineCyclePrev", opts) map("n", "", ":BufferLineCycleNext", opts) -- git map("n", "gq", ":lua require('telescope.builtin').git_commits()", { desc = "Commits" }) map("n", "gw", ":lua require('telescope.builtin').git_bcommits()", { desc = "Commits in branch" }) map("n", "ge", ":lua require('telescope.builtin').git_branches()", { desc = "Branches" }) map("n", "gr", ":lua require('telescope.builtin').git_status()", { desc = "Git status" }) map("n", "ga", ":lua require('telescope.builtin').git_stash()", { desc = "Git stash" }) map("n", "gg", function() Util.float_term({ "gitui" }, { cwd = Util.get_root() }) end, { desc = "gitui (root dir)" }) map("n", "gG", function() Util.float_term({ "gitui" }) end, { desc = "gitui (cwd)" }) -- window switching function _G.set_terminal_maps() local opts = { buffer = 0 } vim.keymap.set("t", "", [[]], opts) vim.keymap.set("t", "jk", [[]], opts) vim.keymap.set("t", "", [[wincmd h]], opts) vim.keymap.set("t", "", [[wincmd j]], opts) vim.keymap.set("n", "", ":lua require('toggleterm').toggle(1)", opts) vim.keymap.set("i", "", ":lua require('toggleterm').toggle(1)", opts) end -- if you only want these mappings for toggle term use term://*toggleterm#* instead vim.cmd("autocmd! TermOpen term://* lua set_terminal_maps()") map("n", "", ":wincmd h", opts) map("n", "", ":wincmd j", opts) map("n", "", ":wincmd k", opts) map("n", "", ":wincmd l", opts) -- harpoon man map("n", "h1", ":lua require('harpoon.ui').nav_file(1)", { desc = "First Harpoon File" }) map("n", "h2", ":lua require('harpoon.ui').nav_file(2)", { desc = "Second Harpoon File" }) map("n", "h3", ":lua require('harpoon.ui').nav_file(3)", { desc = "First Harpoon File" }) map("n", "ha", ":lua require('harpoon.mark').add_file()", { desc = "First Harpoon File" }) map("n", "hd", ":lua require('harpoon.mark').remove_file()", { desc = "First Harpoon File" }) map("n", "hm", ":Telescope harpoon marks", { noremap = true, silent = true, desc = "Show harpoon marks" }) -- telescope map("n", "fb", function() require("telescope").extensions.file_browser.file_browser({}) end, { desc = "File Browser" }) map("n", "ff", function() require("telescope.builtin").find_files() end, { desc = "Find Files" }) map("n", "fg", function() require("telescope.builtin").live_grep() end, { desc = "Live Grep" }) map("n", "fh", function() require("telescope.builtin").help_tags() end, { desc = "Help" }) map("n", "fp", function() require("telescope").extensions.project.project({}) end, { noremap = true, silent = true, desc = "Projects" }) map("n", "z", ":lua require('telescope').extensions.zoxide.list{}", { desc = "Zoxide" }) -- trouble map("n", "t", "TroubleToggle", term_opts) -- better yank function Better_yank(opts) local current_line = unpack(vim.api.nvim_win_get_cursor(0)) vim.api.nvim_command(current_line .. "," .. (opts.count - (current_line - 1)) .. "y") end vim.api.nvim_create_user_command("BetterYank", Better_yank, { count = 1 }) map("n", "by", ":BetterYank", term_opts) -- better delete function Better_delete(opts) local current_line = unpack(vim.api.nvim_win_get_cursor(0)) vim.api.nvim_command(current_line .. "," .. (opts.count - (current_line - 1)) .. "d") end vim.api.nvim_create_user_command("BetterDelete", Better_delete, { count = 1 }) map("n", "bd", ":BetterDelete", term_opts) -- neovide zoom local change_scale_factor = function(delta) vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * delta end vim.keymap.set("n", "", function() change_scale_factor(1.25) end) vim.keymap.set("n", "", function() change_scale_factor(1 / 1.25) end) -- neovide paste vim.g.neovide_input_use_logo = 1 vim.api.nvim_set_keymap("i", "", "pI", { noremap = true, silent = true })