-- 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 discipline = require("jeremydwayne.discipline") -- discipline.cowboy() local keymap = vim.keymap local opts = { noremap = true, silent = true } -- Increment/Decrement keymap.set("n", "+", "", "ggG") -- jumplist keymap.set("n", "", "", opts) -- New Tab keymap.set("n", "te", ":tabedit", opts) -- keymap.set("n", "", ":tabnext", opts) -- keymap.set("n", "", ":tabprev", opts) -- keymap.set("n", "bd", ":bd", opts) -- Split window keymap.set("n", "ss", ":split", opts) keymap.set("n", "sv", ":vsplit", opts) -- Move window keymap.set("n", "sh", "h") keymap.set("n", "sk", "k") keymap.set("n", "sj", "j") keymap.set("n", "sl", "l") -- Resize window keymap.set("n", "", "<") keymap.set("n", "", ">") keymap.set("n", "", "+") keymap.set("n", "", "-") -- Diagnostics keymap.set("n", "", function() vim.diagnostic.goto_next() end, opts) keymap.set("n", "", function() vim.diagnostic.goto_prev() end, opts) keymap.set("n", ":W", vim.cmd.w) keymap.set("n", ":Wq", vim.cmd.wq) keymap.set("n", ":Q", vim.cmd.q) keymap.set("n", "so", vim.cmd.so) keymap.set("n", "pv", vim.cmd.Ex) keymap.set("n", "bd", "bd!") -- option key movement on macos keymap.set("n", "∆", ":m .+1==") keymap.set("n", "˚", ":m .-2==") keymap.set("i", "∆", ":m .+1==gi") keymap.set("i", "˚", ":m .-2==gi") keymap.set("v", "∆", ":m '>+1gv=gv") keymap.set("v", "˚", ":m '<-2gv=gv") -- alt key movement keymap.set("n", "", ":m .+1==") keymap.set("n", "", ":m .-2==") keymap.set("i", "", ":m .+1==gi") keymap.set("i", "", ":m .-2==gi") keymap.set("v", "", ":m '>+1gv=gv") keymap.set("v", "", ":m '<-2gv=gv") keymap.set("n", "J", "mzJ`z") keymap.set("n", "", "zz") keymap.set("n", "", "zz") keymap.set("n", "n", "nzzzv") keymap.set("n", "N", "Nzzzv") -- system yank and paste keymap.set("x", "p", '"_dP') keymap.set("n", "y", '"+y') keymap.set("v", "y", '"+y') keymap.set("n", "Y", '"+Y') keymap.set("n", "d", '"_d') keymap.set("v", "d", '"_d') -- escape vertical edit mode gracefully keymap.set("i", "", "") keymap.set("n", "Q", "") -- search for word cursor is on keymap.set("n", "s", ":%s/\\<\\>//gI") -- make current file executable (shell scripts) keymap.set("n", "x", "!chmod +x %", { silent = true }) -- bufferline tabs keymap.set("n", "", "BufferLineCycleNext") keymap.set("n", "", "BufferLineCyclePrev") keymap.set("n", "bn", "BufferLineMoveNext") keymap.set("n", "bp", "BufferLineMovePrev") keymap.set("n", "u", vim.cmd.UndotreeToggle) keymap.set("n", "", "Neotree toggle reveal") -- nvim dap keymap.set("n", "db", " DapToggleBreakpoint ") keymap.set("n", "dus", function() local widgets = require("dap.ui.widgets") local sidebar = widgets.sidebar(widgets.scopes) sidebar.open() end) -- dap-go keymap.set("n", "dgt", function() require("dap-go").debug_test() end) keymap.set("n", "dgl", function() require("dap-go").debug_last() end) -- gopher keymap.set("n", "gsj", " GoTagAdd json") keymap.set("n", "ger", " GoIfErr") keymap.set("n", "gtg", " GoTestsAll") keymap.set("n", "rn", ":IncRename ") -- Refactoring keymap.set("x", "re", function() require("refactoring").refactor("Extract Function") end) keymap.set("x", "rf", function() require("refactoring").refactor("Extract Function To File") end) -- Extract function supports only visual mode keymap.set("x", "rv", function() require("refactoring").refactor("Extract Variable") end) -- Extract variable supports only visual mode keymap.set("n", "rI", function() require("refactoring").refactor("Inline Function") end) -- Inline func supports only normal keymap.set({ "n", "x" }, "ri", function() require("refactoring").refactor("Inline Variable") end) -- Inline var supports both normal and visual mode keymap.set("n", "rb", function() require("refactoring").refactor("Extract Block") end) keymap.set("n", "rbf", function() require("refactoring").refactor("Extract Block To File") end) -- Extract block supports only normal mode