mappings.lua 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. local opts = { silent = true }
  2. -- ; as :
  3. vim.keymap.set({'n', 'v'}, ';', ':')
  4. -- leave insert mode via jj
  5. vim.keymap.set('i', 'jj', '<ESC>', opts)
  6. -- j/k with wraps
  7. vim.keymap.set({'n', 'v'}, 'j', 'gj', opts)
  8. vim.keymap.set({'n', 'v'}, 'k', 'gk', opts)
  9. -- leave insert mode with <ESC><ESC>
  10. vim.keymap.set('t', '<ESC><ESC>', '<C-\\><C-N>', opts)
  11. -- allow pressing enter to autocomplete
  12. vim.keymap.set('i', '<CR>', 'pumvisible() ? "\\<C-y>" : "\\<CR>"', { expr = true })
  13. -- pickers
  14. vim.keymap.set('n', '<C-P>', '<cmd>lua project_files()<CR>', opts)
  15. vim.keymap.set('n', '<C-O>', '<cmd>Telescope buffers<CR>', opts)
  16. vim.keymap.set('n', '<Leader>ff', '<cmd>Telescope live_grep<CR>', opts)
  17. -- jumplist navigation
  18. vim.keymap.set('n', '[f', '<C-O>', opts)
  19. vim.keymap.set('n', ']f', '<C-I>', opts)
  20. -- cursor display
  21. vim.keymap.set('n', '<Leader>c', '<cmd>set cursorline! cursorcolumn!<CR>', opts)
  22. -- git
  23. -- open status in current split without special flag (so navigating away closes it)
  24. -- https://github.com/tpope/vim-fugitive/issues/1296
  25. vim.keymap.set('n', '<Leader>gs', '<cmd>Gedit :<CR>', opts)
  26. -- open in reverse to match order when rebasing
  27. vim.keymap.set('n', '<Leader>gll', '<cmd>Git log --reverse --oneline origin/HEAD..HEAD<CR>', opts)
  28. vim.keymap.set('n', '<Leader>gb', '<cmd>Telescope git_branches<CR>', opts)
  29. -- undotree
  30. vim.keymap.set('n', '<Leader>ut', '<cmd>UndotreeToggle<CR>', opts)
  31. -- opening terminals
  32. vim.keymap.set('n', '<Leader>tv', '<cmd>vsp term://$SHELL<CR>', opts)
  33. vim.keymap.set('n', '<Leader>to', '<cmd>term<CR>', opts)
  34. -- delete buffer
  35. vim.keymap.set('n', '<Leader>q', '<cmd>lua MiniBufremove.delete()<CR>', opts)
  36. -- diagnostics
  37. vim.keymap.set('n', '<space>e', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
  38. vim.keymap.set('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
  39. vim.keymap.set('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
  40. vim.keymap.set('n', '<space>q', '<cmd>lua vim.diagnostic.setqflist({ severity = { min = vim.diagnostic.severity.WARN } })<CR>', opts)
  41. function on_attach(client, bufnr)
  42. local opts = { silent = true, buffer = bufnr }
  43. -- Enable completion triggered by <c-x><c-o>
  44. vim.bo.omnifunc = 'v:lua.MiniCompletion.completefunc_lsp'
  45. -- LSP-specific mappings
  46. vim.keymap.set('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
  47. vim.keymap.set('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
  48. vim.keymap.set('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
  49. vim.keymap.set('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
  50. vim.keymap.set('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
  51. vim.keymap.set('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
  52. vim.keymap.set('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
  53. vim.keymap.set('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
  54. vim.keymap.set('v', '<space>ca', '<cmd>lua vim.lsp.buf.range_code_action()<CR><ESC>', opts)
  55. vim.keymap.set('n', 'gr', '<cmd>Telescope lsp_references<CR>', opts)
  56. vim.keymap.set('n', '<space>f', '<cmd>lua vim.lsp.buf.format({ async = true })<CR>', opts)
  57. vim.keymap.set('n', '<Leader>fs', '<cmd>Telescope lsp_document_symbols<CR>', opts)
  58. end