local nnoremap = require("config.remap_utils").nnoremap local vnoremap = require("config.remap_utils").vnoremap local inoremap = require("config.remap_utils").inoremap local tnoremap = require("config.remap_utils").tnoremap local xnoremap = require("config.remap_utils").xnoremap local M = {} -- Set leader key to space vim.g.mapleader = " " -- Set Explorer keybind to leader-"e" vim.keymap.set("n","e", vim.cmd.Ex) -- Disable Space bar since it'll be used as the leader key nnoremap("", "") vnoremap("", "") -- Remap to esc to avoid weird interaction inoremap("", "") -- s for quick find/replace for the word under the cursor nnoremap("s", [[:%s/\<\>//gI]]) -- Paste without deleting what's in the yank xnoremap("p", [["_dP]]) -- f to format nnoremap("f", ":Format") -- Characters/Words/Lines count nnoremap("cc", "!wc -m %") nnoremap("cw", "!wc -w %") nnoremap("cl", "!wc -l %") -- LSP Keybinds (exports a function to be used in ../../after/plugin/lsp.lua b/c we need a reference to the current buffer) -- M.map_lsp_keybinds = function(buffer_number) -- Rename variable nnoremap("rn", vim.lsp.buf.rename, { desc = "LSP: [R]e[n]ame", buffer = buffer_number }) -- LSP code action nnoremap("ca", vim.lsp.buf.code_action, { desc = "LSP: [C]ode [A]ction", buffer = buffer_number }) -- Goto definition nnoremap("gd", vim.lsp.buf.definition, { desc = "LSP: [G]oto [D]efinition", buffer = buffer_number }) -- Telescope LSP keybinds -- -- Goto reference nnoremap( "gr", require("telescope.builtin").lsp_references, { desc = "LSP: [G]oto [R]eferences", buffer = buffer_number } ) -- Goto implementation nnoremap( "gi", require("telescope.builtin").lsp_implementations, { desc = "LSP: [G]oto [I]mplementation", buffer = buffer_number } ) -- List of symbols in the current buffer nnoremap( "bs", require("telescope.builtin").lsp_document_symbols, { desc = "LSP: [B]uffer [S]ymbols", buffer = buffer_number } ) -- List of symbols in the workspace nnoremap( "ps", require("telescope.builtin").lsp_workspace_symbols, { desc = "LSP: [P]roject [S]ymbols", buffer = buffer_number } ) -- Hover documentation nnoremap("K", vim.lsp.buf.hover, { desc = "LSP: Hover Documentation", buffer = buffer_number }) -- Signature documentation nnoremap("k", vim.lsp.buf.signature_help, { desc = "LSP: Signature Documentation", buffer = buffer_number }) inoremap("", vim.lsp.buf.signature_help, { desc = "LSP: Signature Documentation", buffer = buffer_number }) -- Goto declaration nnoremap("gD", vim.lsp.buf.declaration, { desc = "LSP: [G]oto [D]eclaration", buffer = buffer_number }) -- Type definition nnoremap("td", vim.lsp.buf.type_definition, { desc = "LSP: [T]ype [D]efinition", buffer = buffer_number }) end -- Goto next diagnostic of any severity nnoremap("]d", function() vim.diagnostic.goto_next({}) vim.api.nvim_feedkeys("zz", "n", false) end) -- Goto prev diagnostic of any severity nnoremap("[d", function() vim.diagnostic.goto_prev({}) vim.api.nvim_feedkeys("zz", "n", false) end) -- Goto next error diagnostic nnoremap("]e", function() vim.diagnostic.goto_next({ severity = vim.diagnostic.severity.ERROR }) vim.api.nvim_feedkeys("zz", "n", false) end) -- Goto previous error diagnostic nnoremap("[e", function() vim.diagnostic.goto_prev({ severity = vim.diagnostic.severity.ERROR }) vim.api.nvim_feedkeys("zz", "n", false) end) -- Goto next warning diagnostic nnoremap("]w", function() vim.diagnostic.goto_next({ severity = vim.diagnostic.severity.WARN }) vim.api.nvim_feedkeys("zz", "n", false) end) -- Goto previous warning diagnostic nnoremap("[w", function() vim.diagnostic.goto_prev({ severity = vim.diagnostic.severity.WARN }) vim.api.nvim_feedkeys("zz", "n", false) end) -- Open diagnostic window nnoremap("d", function() vim.diagnostic.open_float({ border = "rounded", }) end) return M