-- this file contains general remappings for this nvim configuration local opt = { noremap = true, silent = true } local map = vim.api.nvim_set_keymap local lmap = vim.keymap.set map("", "\\", "", opt) vim.g.mapleader = "\\" -- remap j and k -- I refuse to elaborate map("n", "j", "", opt) map("n", "k", "", opt) map("n", "dj", "d", opt) map("n", "dk", "d", opt) map("v", "j", "", opt) map("v", "k", "", opt) -- window navigation map("n", "", "k", opt) -- SWITCHED K AND J map("n", "", "j", opt) -- SWITCHED K AND J map("n", "", "l", opt) map("n", "", "h", opt) -- buffer navigation map("n", "gn", ":bn", opt) map("n", "gp", ":bp", opt) -- Insert mode navigation map("i", "", "", opt) map("i", "", "", opt) -- SWITCHED K AND J map("i", "", "", opt) -- SWITCHED K AND J map("i", "", "", opt) map("i", "", "wi", opt) map("i", "", "Wi", opt) map("i", "", "bi", opt) map("i", "", "Bi", opt) -- Terminal mode map("t", "", "" , opt) -- lexer options..? map("n", "e", ":NERDTreeToggle", opt) -- resizing options map("n", "", ":vertical resize -4", opt) map("n", "", ":resize +1", opt) map("n", "", ":vertical resize +4", opt) map("n", "", ":resize -1", opt) -- better indentation map("v", "<", "", ">gv", opt) -- moving lines map("n", "", ":m .-2==", opt) -- SWITCHED K AND J map("n", "", ":m .+1==", opt) -- SWITCHED K AND J -- moving buffer map("n", "", "", opt) map("n", "", "", opt) -- duplicating lines map("n", "", ":.,.t.-1==", opt) map("n", "", ":.,.t.==", opt) -- leader remaps map("n", "/", ":nohlsearch", opt) -- discard search highlighting map("n", "pl", ":Lazy", opt) -- open plugin manager -- Old mappings for the terminal -- map("n", "t", ":split:terminal:resize 4", opt) -- open terminal fullscreen with \T -- map("n", "T", ":vsplit:terminal", opt) -- split to terminal with \t map("", "t", ":ToggleTerm", opt) -- open ToggleTerm map("t", "t", ":ToggleTerm", opt) -- close ToggleTerm -- miscellaneous map("c", "w!!", "w !sudo tee % > /dev/null", opt) -- better G and gg map("n", "G", "G$", opt) map("n", "gg", "gg0", opt) -- treesitter remaps map("n", "h", "zC", opt) map("n", "l", "zO", opt) map("n", "H", "zM", opt) map("n", "L", "zR", opt) map("n", "f", "za", opt) -- disgnostic remaps lmap("n", "d", vim.diagnostic.open_float) lmap("n", "d[", vim.diagnostic.goto_prev) lmap("n", "d]", vim.diagnostic.goto_next) -- Code Runner remaps map("n", "", ":RunCode", opt) map("n", "", ":echo 'time: ' . strftime('%c')", opt) -- language server remaps -- enable only after attaching language server to buffer vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(event) -- i don't know whether i should enable this -- vim.bo[event.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' local opts = { buffer = event.buf } vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) vim.keymap.set('n', 'wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, opts) vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) vim.keymap.set('n', 'r', vim.lsp.buf.rename, opts) vim.keymap.set({ 'n', 'v' }, 'a', vim.lsp.buf.code_action, opts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) vim.keymap.set('n', 'F', function() vim.lsp.buf.format { async = true } end, opts) end, })