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[5][1] = "" keymaps.normal_mode[6][1] = "" keymaps.normal_mode[7][1] = "" keymaps.normal_mode[8][1] = "" 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 }