Update mappings and install CoC

This commit is contained in:
Chris
2023-06-13 09:13:09 +01:00
parent 4dafaf9154
commit c62942a6fc

236
init.vim
View File

@@ -26,6 +26,11 @@ Plug 'godlygeek/tabular' " Easy alligning of code based on match, :Tab/| will li
Plug 'plasticboy/vim-markdown' " All markdown features (some are disabled by polyglot) Plug 'plasticboy/vim-markdown' " All markdown features (some are disabled by polyglot)
Plug 'sheerun/vim-polyglot' " Dynamically loads syntax hilighting from multiple packages Plug 'sheerun/vim-polyglot' " Dynamically loads syntax hilighting from multiple packages
Plug 'ms-jpq/chadtree', { 'branch': 'chad', 'do': 'python3 -m chadtree deps' } " A file tree Plug 'ms-jpq/chadtree', { 'branch': 'chad', 'do': 'python3 -m chadtree deps' } " A file tree
Plug 'wakatime/vim-wakatime'
Plug 'neoclide/coc.nvim', { 'branch': 'release' } " Autocompletion
Plug 'github/copilot.vim' " Copilot
Plug 'easymotion/vim-easymotion' " Advanced navigation
Plug 'antoinemadec/coc-fzf' " Open CocList results in fzf
"Plug 'phpactor/phpactor', { 'do': 'composer install', 'for': 'php' } "Plug 'phpactor/phpactor', { 'do': 'composer install', 'for': 'php' }
"Plug 'ncm2/ncm2' "Plug 'ncm2/ncm2'
@@ -63,7 +68,9 @@ set undofile "Store the undo history
"set spell "Enable spell checking "set spell "Enable spell checking
set autowriteall "Save the file when switching buffers set autowriteall "Save the file when switching buffers
set colorcolumn=80,120 set colorcolumn=80,120
"}}} set updatetime=300 " Recommended by COC
set signcolumn=yes " Also recommended by COC
" }}}
" Visuals ---- {{{ " Visuals ---- {{{
if isdirectory(system('echo -n "${XDG_CACHE_HOME:-$HOME/.cache}/wal"')) if isdirectory(system('echo -n "${XDG_CACHE_HOME:-$HOME/.cache}/wal"'))
@@ -88,27 +95,28 @@ hi LineNr guibg=bg
hi vertsplit guifg=bg guibg=bg hi vertsplit guifg=bg guibg=bg
" }}} " }}}
" Split Management --- {{{ " Navigation --- {{{
set splitbelow set splitbelow
set splitright set splitright
"We'll set simpler mappings to switch between splits "Increase/Decrease window size
"Decrease window size (replaces some weird netrw stuff) nnoremap <M-q> <C-W><
nnoremap <C-S-H> <C-W>- nnoremap <M-w> <C-W>>
"Increase window size (Redraws the screen, use :redraw instead) nnoremap <M-S-q> <C-W>+
nnoremap <C-S-L> <C-W>+ nnoremap <M-S-w> <C-W>-
nnoremap <C-H> <C-W><C-H> "Move around splits
nnoremap <C-L> <C-W><C-L> nnoremap <M-h> <C-W><C-H>
nnoremap <C-S-J> <C-W><C-J> nnoremap <M-l> <C-W><C-L>
nnoremap <C-S-K> <C-W><C-K> nnoremap <M-j> <C-W><C-J>
"Decrease window size (Backspace clone) nnoremap <M-k> <C-W><C-K>
inoremap <C-S-H> <C-W>- "Go to next tab
"Increase window size (Replaces leaving `insertmode`, don't use `insertmode`) nnoremap <M-S-l> :tabnext<CR>
inoremap <C-S-L> <C-W>+ nnoremap <M-S-h> :tabprev<CR>
inoremap <C-H> <Esc><C-W><C-H>i nnoremap <M-f> :vertical resize<CR>:resize<CR>
inoremap <C-L> <Esc><C-W><C-L>i nnoremap <M-g> <C-W>=
inoremap <C-J> <Esc><C-W><C-J>i nnoremap <M-s> :vsplit<CR>
inoremap <C-K> <Esc><C-W><C-K>i nnoremap <M-v> :split<CR>
nnoremap <M-w> :q<CR>
" }}} " }}}
" Search --- {{{ " Search --- {{{
@@ -128,9 +136,9 @@ nnoremap <Leader>es :source $MYVIMRC<CR>
"Changing unused ctrl bindings "Changing unused ctrl bindings
"Turn on git blame "Turn on git blame
nnoremap <C-A> <CMD>Git blame<CR> nnoremap <C-S-A> <CMD>Git blame<CR>
"List all tags in the current buffer (replaced pageup, use CTRL-u instead) "List all tags in the current buffer (replaced pageup, use CTRL-u instead)
nnoremap <C-B> <CMD>BTags<CR> nnoremap <C-Q> <CMD>CocFzfList outline<CR>
"List all tags in directory "List all tags in directory
"nnoremap <C-S-B> <CMD>Tags<CR> "nnoremap <C-S-B> <CMD>Tags<CR>
"List all the recently opened files (replaced scroll one line up, use "k") "List all the recently opened files (replaced scroll one line up, use "k")
@@ -152,7 +160,7 @@ nnoremap <C-P> <CMD>GFiles<CR>
"Search all files in directory "Search all files in directory
nnoremap <C-S-P> <CMD>Files<CR> nnoremap <C-S-P> <CMD>Files<CR>
"Toggle file draw "Toggle file draw
nnoremap <C-Q> <CMD>CHADopen<CR> nnoremap <C-S-Q> <CMD>CHADopen<CR>
"Search all snippets (uses ultisnips) "Search all snippets (uses ultisnips)
nnoremap <C-S> <CMD>Snippets<CR> nnoremap <C-S> <CMD>Snippets<CR>
"Search git history (replaced scroll one line up, use "k") "Search git history (replaced scroll one line up, use "k")
@@ -161,11 +169,11 @@ nnoremap <C-Y> <CMD>Commits<CR>
nnoremap <C-S-Y> <CMD>BCommits<CR> nnoremap <C-S-Y> <CMD>BCommits<CR>
"Turn on git blame "Turn on git blame
inoremap <C-S-A> <CMD>GBlame<CR> inoremap <C-S-A> <CMD>Git blame<CR>
"List all tags in the current buffer "List all tags in the current buffer
inoremap <C-B> <CMD>BTags<CR> inoremap <C-Q> <CMD>BTags<CR>
"List all tags in directory "List all tags in directory
inoremap <C-S-B> <CMD>Tags<CR> inoremap <C-S-Q> <CMD>Tags<CR>
"List all the recently opened files (replaced inserting characters from below) "List all the recently opened files (replaced inserting characters from below)
inoremap <C-E> <CMD>History<CR> inoremap <C-E> <CMD>History<CR>
"Search within the current buffer "Search within the current buffer
@@ -187,7 +195,7 @@ inoremap <C-P> <CMD>GFiles<CR>
"Search all files in directory "Search all files in directory
inoremap <C-S-P> <CMD>Files<CR> inoremap <C-S-P> <CMD>Files<CR>
"Toggle file draw (replaces CTRL-v clone) "Toggle file draw (replaces CTRL-v clone)
nnoremap <C-Q> <CMD>CHADopen<CR> inoremap <C-S-Q> <CMD>CHADopen<CR>
"Search all snippets (uses ultisnips) "Search all snippets (uses ultisnips)
inoremap <C-S> <CMD>Snippets<CR> inoremap <C-S> <CMD>Snippets<CR>
"Search git history (replaced inserting characters from above) "Search git history (replaced inserting characters from above)
@@ -244,6 +252,155 @@ command! X execute 'silent! x !doas /usr/bin/tee % >/dev/null' <BAR> edit!
" Plugins --- {{{ " Plugins --- {{{
" COC --- {{{
" Use tab for trigger completion with characters ahead and navigate
" NOTE: There's always complete item selected by default, you may want to enable
" no select by `"suggest.noselect": true` in your configuration file
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
" other plugin before putting this into your config
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1) :
\ CheckBackspace() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
" Make <CR> to accept selected completion item or notify coc.nvim to format
" <C-g>u breaks current undo, please make your own choice
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
function! CheckBackspace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
endif
" Use `[g` and `]g` to navigate diagnostics
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
" GoTo code navigation
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use K to show documentation in preview window
nnoremap <silent> K :call ShowDocumentation()<CR>
function! ShowDocumentation()
if CocAction('hasProvider', 'hover')
call CocActionAsync('doHover')
else
call feedkeys('K', 'in')
endif
endfunction
" Highlight the symbol and its references when holding the cursor
autocmd CursorHold * silent call CocActionAsync('highlight')
" Symbol renaming
nmap <leader>rn <Plug>(coc-rename)
" Formatting selected code
xmap <leader>f <Plug>(coc-format-selected)
nmap <leader>f <Plug>(coc-format-selected)
augroup mygroup
autocmd!
" Setup formatexpr specified filetype(s)
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
" Update signature help on jump placeholder
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
augroup end
" Applying code actions to the selected code block
" Example: `<leader>aap` for current paragraph
xmap <leader>a <Plug>(coc-codeaction-selected)
nmap <leader>a <Plug>(coc-codeaction-selected)
" Remap keys for applying code actions at the cursor position
nmap <leader>ac <Plug>(coc-codeaction-cursor)
" Remap keys for apply code actions affect whole buffer
nmap <leader>as <Plug>(coc-codeaction-source)
" Apply the most preferred quickfix action to fix diagnostic on the current line
nmap <leader>qf <Plug>(coc-fix-current)
" Remap keys for applying refactor code actions
nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
" Run the Code Lens action on the current line
nmap <leader>cl <Plug>(coc-codelens-action)
" Map function and class text objects
" NOTE: Requires 'textDocument.documentSymbol' support from the language server
xmap if <Plug>(coc-funcobj-i)
omap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap af <Plug>(coc-funcobj-a)
xmap ic <Plug>(coc-classobj-i)
omap ic <Plug>(coc-classobj-i)
xmap ac <Plug>(coc-classobj-a)
omap ac <Plug>(coc-classobj-a)
" Remap <C-f> and <C-b> to scroll float windows/popups
" if has('nvim-0.4.0') || has('patch-8.2.0750')
" nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
" nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
" inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
" inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
" vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
" vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
" endif
" Use CTRL-S for selections ranges
" Requires 'textDocument/selectionRange' support of language server
nmap <silent> <C-s> <Plug>(coc-range-select)
xmap <silent> <C-s> <Plug>(coc-range-select)
" Add `:Format` command to format current buffer
command! -nargs=0 Format :call CocActionAsync('format')
" Add `:Fold` command to fold current buffer
command! -nargs=? Fold :call CocAction('fold', <f-args>)
" Add `:OR` command for organize imports of the current buffer
command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport')
" Add (Neo)Vim's native statusline support
" NOTE: Please see `:h coc-status` for integrations with external plugins that
" provide custom statusline: lightline.vim, vim-airline
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" Mappings for CoCList
" Show all diagnostics
nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr>
" Manage extensions
nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr>
" Show commands
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr>
" Find symbol of current document
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr>
" Search workspace symbols
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr>
" Do default action for next item
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR>
" Do default action for previous item
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR>
" Resume latest coc list
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
" }}}
" Emmet --- {{{
" Toggle emmet completion using <Tab> with <Leader>em " Toggle emmet completion using <Tab> with <Leader>em
let g:emmet_completion = 0 let g:emmet_completion = 0
function ToggleEmmet() function ToggleEmmet()
@@ -260,13 +417,19 @@ function ToggleEmmet()
endif endif
endfunction endfunction
nnoremap <Leader>em :call ToggleEmmet()<CR> nnoremap <Leader>em :call ToggleEmmet()<CR>
" }}}
" Markdown --- {{{
" Conceal markdown text " Conceal markdown text
set conceallevel=3 set conceallevel=3
" }}}
let g:AutoPairsFlyMode = 1 " AutoPairs --- {{{
let g:AutoPairsFlyMode = 0
let g:AutoPairsShortcutBackInsert = '<M-b>' " Use <M-B> to insert the closing parentheses if it jumped ahead by mistake let g:AutoPairsShortcutBackInsert = '<M-b>' " Use <M-B> to insert the closing parentheses if it jumped ahead by mistake
" }}}
" CHADTree --- {{{
let g:chadtree_settings = { let g:chadtree_settings = {
\ 'theme': { \ 'theme': {
\ 'icon_glyph_set': 'devicons', \ 'icon_glyph_set': 'devicons',
@@ -292,7 +455,9 @@ let g:chadtree_settings = {
\ } \ }
\ } \ }
\ } \ }
" }}}
" Commentary --- {{{
" function s:set_commentary_format() " function s:set_commentary_format()
" echo "running command" " echo "running command"
" if &filetype =~ 'vue\|html\|svelte' " if &filetype =~ 'vue\|html\|svelte'
@@ -310,6 +475,23 @@ let g:chadtree_settings = {
" nnoremap gcc :call <SID>set_commentary_format()<CR><Plug>Commentary " nnoremap gcc :call <SID>set_commentary_format()<CR><Plug>Commentary
" nnoremap cgc :call <SID>set_commentary_format()<CR><Plug>Commentary " nnoremap cgc :call <SID>set_commentary_format()<CR><Plug>Commentary
" nnoremap cgu :call <SID>set_commentary_format()<CR><Plug>Commentary<Plug>Commentary " nnoremap cgu :call <SID>set_commentary_format()<CR><Plug>Commentary<Plug>Commentary
" }}}
" Easymotion --- {{{
let g:EasyMotion_do_mapping = 0 " Disable default mappings
map <Leader> <Plug>(easymotion-prefix)
" Jump to anywhere you want with minimal keystrokes, with just one key binding.
" `s{char}{label}
nmap s <Plug>(easymotion-overwin-f)
" Turn on case-insensitive feature
let g:EasyMotion_smartcase = 1
" JK motions: Line motions
map <Leader>j <Plug>(easymotion-j)
map <Leader>k <Plug>(easymotion-k)
" }}}
" }}} " }}}