local opts = { silent = true } -- ; as : vim.keymap.set({'n', 'v'}, ';', ':') -- leave insert mode via jj vim.keymap.set('i', 'jj', '', opts) -- j/k with wraps vim.keymap.set({'n', 'v'}, 'j', 'gj', opts) vim.keymap.set({'n', 'v'}, 'k', 'gk', opts) -- leave insert mode with vim.keymap.set('t', '', '', opts) -- select pasted text vim.keymap.set('n', 'gp', '`[v`]', opts) -- pickers vim.keymap.set('n', '', 'lua project_files()', opts) vim.keymap.set('n', '', 'Telescope buffers', opts) vim.keymap.set('n', 'fg', 'lua commit_files()', opts) vim.keymap.set('n', 'ff', 'Telescope live_grep', opts) -- jumplist navigation vim.keymap.set('n', '[f', '', opts) vim.keymap.set('n', ']f', '', opts) -- quickfix navigation vim.keymap.set('n', '[q', 'cprevious', opts) vim.keymap.set('n', ']q', 'cnext', opts) -- conflicts navigation vim.keymap.set('n', '[x', '?^[=>]\\{7}', opts) vim.keymap.set('n', ']x', '/^[=>]\\{7}', opts) -- hunk navigation vim.keymap.set('n', '[c', 'Gitsigns prev_hunk', opts) vim.keymap.set('n', ']c', 'Gitsigns next_hunk', opts) -- window navigation vim.keymap.set('n', '[w', 'W', opts) vim.keymap.set('n', ']w', 'w', opts) -- cursor display vim.keymap.set('n', 'c', 'set cursorline! cursorcolumn!', opts) -- git -- open status in current split without special flag (so navigating away closes it) -- https://github.com/tpope/vim-fugitive/issues/1296 vim.keymap.set('n', 'gs', 'Gedit :', opts) -- open in reverse to match order when rebasing vim.keymap.set('n', 'gll', 'Git log --reverse --oneline origin/HEAD..HEAD', opts) vim.keymap.set('n', 'gb', 'Telescope git_branches', opts) -- undotree vim.keymap.set('n', 'ut', 'UndotreeToggle', opts) -- opening terminals vim.keymap.set('n', 'tv', 'vsp term://$SHELL', opts) vim.keymap.set('n', 'to', 'term', opts) -- delete buffer vim.keymap.set('n', 'q', 'lua MiniBufremove.delete()', opts) vim.keymap.set('n', 'Q', 'lua MiniBufremove.delete(0, true)', opts) -- split/join vim.keymap.set('n', 's', 'TSJSplit', opts) vim.keymap.set('n', 'j', 'TSJJoin', opts) -- diagnostics vim.keymap.set('n', 'e', 'lua vim.diagnostic.open_float()', opts) vim.keymap.set('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) vim.keymap.set('n', ']d', 'lua vim.diagnostic.goto_next()', opts) vim.keymap.set('n', 'q', 'lua vim.diagnostic.setqflist({ severity = { min = vim.diagnostic.severity.WARN } })', opts) function on_attach(client, bufnr) local opts = { silent = true, buffer = bufnr } -- LSP-specific mappings vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) vim.keymap.set({'n', 'i'}, '', 'lua vim.lsp.buf.signature_help()', opts) vim.keymap.set('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) vim.keymap.set('n', 'rn', 'lua vim.lsp.buf.rename()', opts) vim.keymap.set('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) vim.keymap.set('v', 'ca', 'lua vim.lsp.buf.range_code_action()', opts) vim.keymap.set('n', 'gr', 'Telescope lsp_references', opts) vim.keymap.set('n', 'fs', 'Telescope lsp_document_symbols', opts) vim.keymap.set('n', 'fr', 'Telescope resume', opts) end