Configures the built-in LSP client with autocompletion, based on ‘Opinionated’
- Install and initialize: 
lazyman -x StartLsp - Configuration category: Starter
 - Base configuration: Custom
 - Plugin manager: Lazy
 - Installation location: 
~/.config/nvim-StartLsp 
Git repository
https://github.com/VonHeikemen/nvim-starter/tree/03-lsp
Lazy managed plugins
StartLsp Keymaps
Normal mode keymaps
| Description |   | 
|---|
| Left hand side |  e | 
| Right hand side | <Cmd>NvimTreeToggle<CR> | 
| Description |   | 
|---|
| Left hand side |  fs | 
| Right hand side | <Cmd>Telescope current_buffer_fuzzy_find<CR> | 
| Description |   | 
|---|
| Left hand side |  fd | 
| Right hand side | <Cmd>Telescope diagnostics<CR> | 
| Description |   | 
|---|
| Left hand side |  fg | 
| Right hand side | <Cmd>Telescope live_grep<CR> | 
| Description |   | 
|---|
| Left hand side |  ff | 
| Right hand side | <Cmd>Telescope find_files<CR> | 
| Description |   | 
|---|
| Left hand side |   | 
| Right hand side | <Cmd>Telescope buffers<CR> | 
| Description |   | 
|---|
| Left hand side |  ? | 
| Right hand side | <Cmd>Telescope oldfiles<CR> | 
| Description |   | 
|---|
| Left hand side |  bc | 
| Right hand side | <Cmd>Bdelete<CR> | 
| Description |   | 
|---|
| Left hand side |  bl | 
| Right hand side | <Cmd>buffer #<CR> | 
| Description |   | 
|---|
| Left hand side |  bq | 
| Right hand side | <Cmd>bdelete<CR> | 
| Description |   | 
|---|
| Left hand side |  w | 
| Right hand side | <Cmd>write<CR> | 
| Description |   | 
|---|
| Left hand side |  a | 
| Right hand side | :keepjumps normal! ggVG<CR> | 
| Description |   | 
|---|
| Left hand side |  l | 
| Right hand side | g_ | 
| Description |   | 
|---|
| Left hand side |  h | 
| Right hand side | ^ | 
| Description |   | 
|---|
| Left hand side | % | 
| Right hand side | <Plug>(MatchitNormalForward) | 
| Description | Nvim builtin | 
|---|
| Left hand side | & | 
| Right hand side | :&&<CR> | 
| Description | Nvim builtin | 
|---|
| Left hand side | Y | 
| Right hand side | y$ | 
| Description |   | 
|---|
| Left hand side | [% | 
| Right hand side | <Plug>(MatchitNormalMultiBackward) | 
| Description |   | 
|---|
| Left hand side | ]% | 
| Right hand side | <Plug>(MatchitNormalMultiForward) | 
| Description |   | 
|---|
| Left hand side | cS | 
| Right hand side | <Plug>CSurround | 
| Description |   | 
|---|
| Left hand side | cs | 
| Right hand side | <Plug>Csurround | 
| Description |   | 
|---|
| Left hand side | ds | 
| Right hand side | <Plug>Dsurround | 
| Description | Comment insert end of line | 
|---|
| Left hand side | gcA | 
| Right hand side |   | 
| Description | Comment insert above | 
|---|
| Left hand side | gcO | 
| Right hand side |   | 
| Description | Comment insert below | 
|---|
| Left hand side | gco | 
| Right hand side |   | 
| Description | Comment toggle current block | 
|---|
| Left hand side | gbc | 
| Right hand side |   | 
| Description | Comment toggle current line | 
|---|
| Left hand side | gcc | 
| Right hand side |   | 
| Description | Comment toggle blockwise | 
|---|
| Left hand side | gb | 
| Right hand side | <Plug>(comment_toggle_blockwise) | 
| Description | Comment toggle linewise | 
|---|
| Left hand side | gc | 
| Right hand side | <Plug>(comment_toggle_linewise) | 
| Description |   | 
|---|
| Left hand side | gx | 
| Right hand side | <Plug>NetrwBrowseX | 
| Description |   | 
|---|
| Left hand side | g% | 
| Right hand side | <Plug>(MatchitNormalBackward) | 
| Description |   | 
|---|
| Left hand side | gp | 
| Right hand side | "+p | 
| Description |   | 
|---|
| Left hand side | gy | 
| Right hand side | "+y | 
| Description |   | 
|---|
| Left hand side | x | 
| Right hand side | "_x | 
| Description |   | 
|---|
| Left hand side | y<C-G> | 
| Right hand side | :<C-U>call setreg(v:register, fugitive#Object(@%))<CR> | 
| Description |   | 
|---|
| Left hand side | ySS | 
| Right hand side | <Plug>YSsurround | 
| Description |   | 
|---|
| Left hand side | ySs | 
| Right hand side | <Plug>YSsurround | 
| Description |   | 
|---|
| Left hand side | yss | 
| Right hand side | <Plug>Yssurround | 
| Description |   | 
|---|
| Left hand side | yS | 
| Right hand side | <Plug>YSurround | 
| Description |   | 
|---|
| Left hand side | ys | 
| Right hand side | <Plug>Ysurround | 
| Description | Toggle Terminal | 
|---|
| Left hand side | <C-G> | 
| Right hand side | <Cmd>execute v:count . "ToggleTerm"<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>NetrwBrowseX | 
| Right hand side | :call netrw#BrowseX(netrw#GX(),netrw#CheckIfRemote(netrw#GX()))<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitNormalMultiForward) | 
| Right hand side | :<C-U>call matchit#MultiMatch("W", "n")<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitNormalMultiBackward) | 
| Right hand side | :<C-U>call matchit#MultiMatch("bW", "n")<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitNormalBackward) | 
| Right hand side | :<C-U>call matchit#Match_wrapper('',0,'n')<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitNormalForward) | 
| Right hand side | :<C-U>call matchit#Match_wrapper('',1,'n')<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>luasnip-expand-repeat | 
| Right hand side |   | 
| Description |   | 
|---|
| Left hand side | <Plug>luasnip-delete-check | 
| Right hand side |   | 
| Description |   | 
|---|
| Left hand side | <Plug>fugitive: | 
| Right hand side |  | 
| Description |   | 
|---|
| Left hand side | <Plug>fugitive:y<C-G> | 
| Right hand side | :<C-U>call setreg(v:register, fugitive#Object(@%))<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>YSurround | 
| Right hand side | <SNR>9_opfunc2('setup') | 
| Description |   | 
|---|
| Left hand side | <Plug>Ysurround | 
| Right hand side | <SNR>9_opfunc('setup') | 
| Description |   | 
|---|
| Left hand side | <Plug>YSsurround | 
| Right hand side | <SNR>9_opfunc2('setup').'_' | 
| Description |   | 
|---|
| Left hand side | <Plug>Yssurround | 
| Right hand side | '^'.v:count1.<SNR>9_opfunc('setup').'g_' | 
| Description |   | 
|---|
| Left hand side | <Plug>CSurround | 
| Right hand side | :<C-U>call <SNR>9_changesurround(1)<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>Csurround | 
| Right hand side | :<C-U>call <SNR>9_changesurround()<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>Dsurround | 
| Right hand side | :<C-U>call <SNR>9_dosurround(<SNR>9_inputtarget())<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>SurroundRepeat | 
| Right hand side | . | 
| Description |   | 
|---|
| Left hand side | <Plug>PlenaryTestFile | 
| Right hand side | :lua require('plenary.test_harness').test_directory(vim.fn.expand("%:p"))<CR> | 
| Description | Comment toggle blockwise with count | 
|---|
| Left hand side | <Plug>(comment_toggle_blockwise_count) | 
| Right hand side |   | 
| Description | Comment toggle linewise with count | 
|---|
| Left hand side | <Plug>(comment_toggle_linewise_count) | 
| Right hand side |   | 
| Description | Comment toggle current block | 
|---|
| Left hand side | <Plug>(comment_toggle_blockwise_current) | 
| Right hand side |   | 
| Description | Comment toggle current line | 
|---|
| Left hand side | <Plug>(comment_toggle_linewise_current) | 
| Right hand side |   | 
| Description | Comment toggle blockwise | 
|---|
| Left hand side | <Plug>(comment_toggle_blockwise) | 
| Right hand side |   | 
| Description | Comment toggle linewise | 
|---|
| Left hand side | <Plug>(comment_toggle_linewise) | 
| Right hand side |   | 
| Description | Nvim builtin | 
|---|
| Left hand side | <C-L> | 
| Right hand side | <Cmd>nohlsearch|diffupdate|normal! <C-L><CR> | 
Visual mode keymaps
| Description |   | 
|---|
| Left hand side |  l | 
| Right hand side | g_ | 
| Description |   | 
|---|
| Left hand side |  h | 
| Right hand side | ^ | 
| Description | Nvim builtin | 
|---|
| Left hand side | # | 
| Right hand side | y?\V<C-R>"<CR> | 
| Description |   | 
|---|
| Left hand side | % | 
| Right hand side | <Plug>(MatchitVisualForward) | 
| Description | Nvim builtin | 
|---|
| Left hand side | * | 
| Right hand side | y/\V<C-R>"<CR> | 
| Description |   | 
|---|
| Left hand side | @(targets) | 
| Right hand side | :<C-U>call targets#do()<CR> | 
| Description |   | 
|---|
| Left hand side | A | 
| Right hand side | targets#e('o', 'A', 'A') | 
| Description |   | 
|---|
| Left hand side | I | 
| Right hand side | targets#e('o', 'I', 'I') | 
| Description |   | 
|---|
| Left hand side | S | 
| Right hand side | <Plug>VSurround | 
| Description |   | 
|---|
| Left hand side | [% | 
| Right hand side | <Plug>(MatchitVisualMultiBackward) | 
| Description |   | 
|---|
| Left hand side | ]% | 
| Right hand side | <Plug>(MatchitVisualMultiForward) | 
| Description |   | 
|---|
| Left hand side | a% | 
| Right hand side | <Plug>(MatchitVisualTextObject) | 
| Description |   | 
|---|
| Left hand side | a | 
| Right hand side | targets#e('o', 'a', 'a') | 
| Description | Comment toggle blockwise (visual) | 
|---|
| Left hand side | gb | 
| Right hand side | <Plug>(comment_toggle_blockwise_visual) | 
| Description | Comment toggle linewise (visual) | 
|---|
| Left hand side | gc | 
| Right hand side | <Plug>(comment_toggle_linewise_visual) | 
| Description |   | 
|---|
| Left hand side | gx | 
| Right hand side | <Plug>NetrwBrowseXVis | 
| Description |   | 
|---|
| Left hand side | g% | 
| Right hand side | <Plug>(MatchitVisualBackward) | 
| Description |   | 
|---|
| Left hand side | gS | 
| Right hand side | <Plug>VgSurround | 
| Description |   | 
|---|
| Left hand side | gp | 
| Right hand side | "+p | 
| Description |   | 
|---|
| Left hand side | gy | 
| Right hand side | "+y | 
| Description |   | 
|---|
| Left hand side | i | 
| Right hand side | targets#e('o', 'i', 'i') | 
| Description |   | 
|---|
| Left hand side | x | 
| Right hand side | "_x | 
| Description |   | 
|---|
| Left hand side | <Plug>NetrwBrowseXVis | 
| Right hand side | :<C-U>call netrw#BrowseXVis()<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitVisualTextObject) | 
| Right hand side | <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward) | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitVisualMultiForward) | 
| Right hand side | :<C-U>call matchit#MultiMatch("W", "n")<CR>m'gv`` | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitVisualMultiBackward) | 
| Right hand side | :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv`` | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitVisualBackward) | 
| Right hand side | :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv`` | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitVisualForward) | 
| Right hand side | :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv`` | 
| Description |   | 
|---|
| Left hand side | <Plug>VgSurround | 
| Right hand side | :<C-U>call <SNR>18_opfunc(visualmode(),visualmode() ==# 'V' ? 0 : 1)<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>VSurround | 
| Right hand side | :<C-U>call <SNR>18_opfunc(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>luasnip-expand-repeat | 
| Right hand side |   | 
| Description | Comment toggle blockwise (visual) | 
|---|
| Left hand side | <Plug>(comment_toggle_blockwise_visual) | 
| Right hand side | <Esc><Cmd>lua require("Comment.api").locked("toggle.blockwise")(vim.fn.visualmode())<CR> | 
| Description | Comment toggle linewise (visual) | 
|---|
| Left hand side | <Plug>(comment_toggle_linewise_visual) | 
| Right hand side | <Esc><Cmd>lua require("Comment.api").locked("toggle.linewise")(vim.fn.visualmode())<CR> | 
Operator mode keymaps
| Description |   | 
|---|
| Left hand side |  l | 
| Right hand side | g_ | 
| Description |   | 
|---|
| Left hand side |  h | 
| Right hand side | ^ | 
| Description |   | 
|---|
| Left hand side | % | 
| Right hand side | <Plug>(MatchitOperationForward) | 
| Description |   | 
|---|
| Left hand side | @(targets) | 
| Right hand side | :<C-U>call targets#do()<CR> | 
| Description |   | 
|---|
| Left hand side | A | 
| Right hand side | targets#e('o', 'A', 'A') | 
| Description |   | 
|---|
| Left hand side | I | 
| Right hand side | targets#e('o', 'I', 'I') | 
| Description |   | 
|---|
| Left hand side | [% | 
| Right hand side | <Plug>(MatchitOperationMultiBackward) | 
| Description |   | 
|---|
| Left hand side | ]% | 
| Right hand side | <Plug>(MatchitOperationMultiForward) | 
| Description |   | 
|---|
| Left hand side | a | 
| Right hand side | targets#e('o', 'a', 'a') | 
| Description |   | 
|---|
| Left hand side | g% | 
| Right hand side | <Plug>(MatchitOperationBackward) | 
| Description |   | 
|---|
| Left hand side | i | 
| Right hand side | targets#e('o', 'i', 'i') | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitOperationMultiForward) | 
| Right hand side | :<C-U>call matchit#MultiMatch("W", "o")<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitOperationMultiBackward) | 
| Right hand side | :<C-U>call matchit#MultiMatch("bW", "o")<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitOperationBackward) | 
| Right hand side | :<C-U>call matchit#Match_wrapper('',0,'o')<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>(MatchitOperationForward) | 
| Right hand side | :<C-U>call matchit#Match_wrapper('',1,'o')<CR> | 
| Description |   | 
|---|
| Left hand side | <Plug>luasnip-expand-repeat | 
| Right hand side |   |