function map(mode, lhs, rhs, opts) local options = { noremap = true, silent = true } if opts then options = vim.tbl_extend("force", options, opts) end vim.keymap.set(mode, lhs, rhs, options) end --This code just maps vim.keymap.set() to something easier to type. Also, typing { noremap = true, silent = true } won’t be needed, because that is also implemented in the function. vim.g.mapleader = " " map("i", "jk", "") -- remap escape map("n", "+", ":bNext") --switch tabs map("n", "n", ":Neotree toggle") --open Nerdtree map("n", "z", ":ZenMode") --open ZenMode (distraction-free) map("n", "d", ":ToggleDiag") -- toggle all diagnostics vim.api.nvim_create_autocmd("LspAttach", { desc = "LSP actions", callback = function() local bufmap = function(mode, lhs, rhs) local opts = { buffer = true } vim.keymap.set(mode, lhs, rhs, opts) end -- Displays hover information about the symbol under the cursor bufmap("n", "K", "lua vim.lsp.buf.hover()") -- Jump to the definition bufmap("n", "gd", "lua vim.lsp.buf.definition()") -- Jump to declaration bufmap("n", "gD", "lua vim.lsp.buf.declaration()") -- Lists all the implementations for the symbol under the cursor bufmap("n", "gi", "lua vim.lsp.buf.implementation()") -- Jumps to the definition of the type symbol bufmap("n", "go", "lua vim.lsp.buf.type_definition()") -- Lists all the references bufmap("n", "gr", "lua vim.lsp.buf.references()") -- Displays a function's signature information bufmap("n", "gs", "lua vim.lsp.buf.signature_help()") -- Renames all references to the symbol under the cursor bufmap("n", "", "lua vim.lsp.buf.rename()") -- Selects a code action available at the current cursor position bufmap("n", "", "lua vim.lsp.buf.code_action()") -- Show diagnostics in a floating window bufmap("n", "gl", "lua vim.diagnostic.open_float()") -- Move to the previous diagnostic bufmap("n", "[d", "lua vim.diagnostic.goto_prev()") -- Move to the next diagnostic bufmap("n", "]d", "lua vim.diagnostic.goto_next()") end, })