Update mappings and install CoC

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

238
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 '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 '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 'ncm2/ncm2'
@@ -63,7 +68,9 @@ set undofile "Store the undo history
"set spell "Enable spell checking
set autowriteall "Save the file when switching buffers
set colorcolumn=80,120
"}}}
set updatetime=300 " Recommended by COC
set signcolumn=yes " Also recommended by COC
" }}}
" Visuals ---- {{{
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
" }}}
" Split Management --- {{{
" Navigation --- {{{
set splitbelow
set splitright
"We'll set simpler mappings to switch between splits
"Decrease window size (replaces some weird netrw stuff)
nnoremap <C-S-H> <C-W>-
"Increase window size (Redraws the screen, use :redraw instead)
nnoremap <C-S-L> <C-W>+
nnoremap <C-H> <C-W><C-H>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-S-J> <C-W><C-J>
nnoremap <C-S-K> <C-W><C-K>
"Decrease window size (Backspace clone)
inoremap <C-S-H> <C-W>-
"Increase window size (Replaces leaving `insertmode`, don't use `insertmode`)
inoremap <C-S-L> <C-W>+
inoremap <C-H> <Esc><C-W><C-H>i
inoremap <C-L> <Esc><C-W><C-L>i
inoremap <C-J> <Esc><C-W><C-J>i
inoremap <C-K> <Esc><C-W><C-K>i
"Increase/Decrease window size
nnoremap <M-q> <C-W><
nnoremap <M-w> <C-W>>
nnoremap <M-S-q> <C-W>+
nnoremap <M-S-w> <C-W>-
"Move around splits
nnoremap <M-h> <C-W><C-H>
nnoremap <M-l> <C-W><C-L>
nnoremap <M-j> <C-W><C-J>
nnoremap <M-k> <C-W><C-K>
"Go to next tab
nnoremap <M-S-l> :tabnext<CR>
nnoremap <M-S-h> :tabprev<CR>
nnoremap <M-f> :vertical resize<CR>:resize<CR>
nnoremap <M-g> <C-W>=
nnoremap <M-s> :vsplit<CR>
nnoremap <M-v> :split<CR>
nnoremap <M-w> :q<CR>
" }}}
" Search --- {{{
@@ -128,9 +136,9 @@ nnoremap <Leader>es :source $MYVIMRC<CR>
"Changing unused ctrl bindings
"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)
nnoremap <C-B> <CMD>BTags<CR>
nnoremap <C-Q> <CMD>CocFzfList outline<CR>
"List all tags in directory
"nnoremap <C-S-B> <CMD>Tags<CR>
"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
nnoremap <C-S-P> <CMD>Files<CR>
"Toggle file draw
nnoremap <C-Q> <CMD>CHADopen<CR>
nnoremap <C-S-Q> <CMD>CHADopen<CR>
"Search all snippets (uses ultisnips)
nnoremap <C-S> <CMD>Snippets<CR>
"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>
"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
inoremap <C-B> <CMD>BTags<CR>
inoremap <C-Q> <CMD>BTags<CR>
"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)
inoremap <C-E> <CMD>History<CR>
"Search within the current buffer
@@ -187,7 +195,7 @@ inoremap <C-P> <CMD>GFiles<CR>
"Search all files in directory
inoremap <C-S-P> <CMD>Files<CR>
"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)
inoremap <C-S> <CMD>Snippets<CR>
"Search git history (replaced inserting characters from above)
@@ -243,7 +251,156 @@ command! X execute 'silent! x !doas /usr/bin/tee % >/dev/null' <BAR> edit!
" }}}
" 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
let g:emmet_completion = 0
function ToggleEmmet()
@@ -260,13 +417,19 @@ function ToggleEmmet()
endif
endfunction
nnoremap <Leader>em :call ToggleEmmet()<CR>
" }}}
" Markdown --- {{{
" Conceal markdown text
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
" }}}
" CHADTree --- {{{
let g:chadtree_settings = {
\ 'theme': {
\ 'icon_glyph_set': 'devicons',
@@ -292,7 +455,9 @@ let g:chadtree_settings = {
\ }
\ }
\ }
" }}}
" Commentary --- {{{
" function s:set_commentary_format()
" echo "running command"
" if &filetype =~ 'vue\|html\|svelte'
@@ -310,6 +475,23 @@ let g:chadtree_settings = {
" nnoremap gcc :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
" }}}
" 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)
" }}}
" }}}