local opts = { insert_mode = { noremap = true, silent = true }, normal_mode = { noremap = true, silent = true }, visual_mode = { noremap = true, silent = true }, visual_block_mode = { noremap = true, silent = true }, term_mode = { silent = true }, } local keymaps = { insert_mode = { -- I hate escape ["jk"] = { "" }, ["kj"] = { "" }, ["jj"] = { "" }, -- Move current line / block with Alt-j/k ala vscode. [""] = { ":m .+1==gi" }, [""] = { ":m .-2==gi" }, -- navigation [""] = { "k" }, [""] = { "j" }, [""] = { "h" }, [""] = { "l" }, }, normal_mode = { -- Better window movement [""] = { "h" }, [""] = { "j" }, [""] = { "k" }, [""] = { "l" }, -- Resize with arrows [""] = { ":resize -2" }, [""] = { ":resize +2" }, [""] = { ":vertical resize -2" }, [""] = { ":vertical resize +2" }, -- Tab switch buffer -- { "", ":bnext" }, -- { "", ":bprevious" }, -- Move current line / block with Alt-j/k a la vscode. [""] = { ":m .+1==" }, [""] = { ":m .-2==" }, -- QuickFix ["]q"] = { ":cnext" }, ["[q"] = { ":cprev" }, [""] = { ":call QuickFixToggle()" }, -- {'', 'compe#complete()', {noremap = true, silent = true, expr = true}}, -- LSP ["gd"] = { "lua vim.lsp.buf.definition()" }, ["gD"] = { "lua vim.lsp.buf.declaration()" }, ["gr"] = { "lua vim.lsp.buf.references()" }, ["gi"] = { "lua vim.lsp.buf.implementation()" }, ["gl"] = { "lua vim.lsp.diagnostic.show_line_diagnostics({ show_header = false, border = 'single' })" }, ["gs"] = { "lua vim.lsp.buf.signature_help()" }, ["gp"] = { "lua require'lsp.peek'.Peek('definition')" }, ["K"] = { "lua vim.lsp.buf.hover()" }, [""] = { "lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = lvim.lsp.popup_border}})" }, [""] = { "lua vim.lsp.diagnostic.goto_next({popup_opts = {border = lvim.lsp.popup_border}})" }, }, term_mode = { -- Terminal window navigation [""] = { "h" }, [""] = { "j" }, [""] = { "k" }, [""] = { "l" }, }, visual_mode = { -- Better indenting ["<"] = { ""] = { ">gv" }, -- { "p", '"0p', { silent = true } }, -- { "P", '"0P', { silent = true } }, }, visual_block_mode = { -- Move selected line / block of text in visual mode ["K"] = { ":move '<-2gv-gv" }, ["J"] = { ":move '>+1gv-gv" }, -- Move current line / block with Alt-j/k ala vscode. [""] = { ":m '>+1gv-gv" }, [""] = { ":m '<-2gv-gv" }, }, } if vim.fn.has "mac" == 1 then -- TODO: fix this keymaps.normal_mode[""] = keymaps.normal_mode[""] keymaps.normal_mode[""] = keymaps.normal_mode[""] keymaps.normal_mode[""] = keymaps.normal_mode[""] keymaps.normal_mode[""] = keymaps.normal_mode[""] end vim.g.mapleader = (lvim.leader == "space" and " ") or lvim.leader -- navigate tab completion with and -- runs conditionally vim.cmd 'inoremap pumvisible() ? "\\" : "\\"' vim.cmd 'inoremap pumvisible() ? "\\" : "\\"' return { keymaps = keymaps, opts = opts }