" Use tab for trigger completion with characters ahead and navigate. inoremap \ pumvisible() ? "\" : \ check_back_space() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " Use to trigger completion. inoremap coc#refresh() " Use to confirm completion, `u` means break undo chain at current " position. Coc only does snippet and additional edit on confirm. if exists('*complete_info') inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" else imap pumvisible() ? "\" : "\u\" endif " GoTo code navigation. nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) " Use K to show documentation in preview window. nnoremap K :call show_documentation() function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('') else call CocAction('doHover') endif endfunction " Highlight the symbol and its references when holding the cursor. autocmd CursorHold * silent call CocActionAsync('highlight') " Symbol renaming. " nmap rn (coc-rename) 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 codeAction to the selected region. " Example: `aap` for current paragraph " xmap a (coc-codeaction-selected) " nmap a (coc-codeaction-selected) " Remap keys for applying codeAction to the current line. " nmap ac (coc-codeaction) " Apply AutoFix to problem on the current line. " nmap qf (coc-fix-current) " Introduce function text object " NOTE: Requires 'textDocument.documentSymbol' support from the language server. xmap if (coc-funcobj-i) xmap af (coc-funcobj-a) omap if (coc-funcobj-i) omap af (coc-funcobj-a) " Add `:Format` command to format current buffer. command! -nargs=0 Format :call CocAction('format') " Add `:Fold` command to fold current buffer. command! -nargs=? Fold :call CocAction('fold', ) " Add `:OR` command for organize imports of the current buffer. command! -nargs=0 OR :call CocAction('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 using CoCList: " Show all diagnostics. " TODO add these to which key " nnoremap a :CocList diagnostics " " Manage extensions. " nnoremap e :CocList extensions " " Show commands. " nnoremap c :CocList commands " " Find symbol of current document. " nnoremap o :CocList outline " " Search workspace symbols. " nnoremap s :CocList -I symbols " " Do default action for next item. " nnoremap j :CocNext " " Do default action for previous item. " nnoremap k :CocPrev " " Resume latest coc list. " nnoremap p :CocListResume " Explorer let g:coc_explorer_global_presets = { \ 'floating': { \ 'position': 'floating', \ }, \ 'floatingLeftside': { \ 'position': 'floating', \ 'floating-position': 'left-center', \ 'floating-width': 30, \ }, \ 'floatingRightside': { \ 'position': 'floating', \ 'floating-position': 'right-center', \ 'floating-width': 30, \ }, \ 'simplify': { \ 'file.child.template': '[selection | clip | 1] [indent][icon | 1] [filename omitCenter 1]' \ } \ } "nmap e :CocCommand explorer " nnoremap e :CocCommand explorer " nmap f :CocCommand explorer --preset floatingRightside autocmd BufEnter * if (winnr("$") == 1 && &filetype == 'coc-explorer') | q | endif " Snippets " Use for trigger snippet expand. imap (coc-snippets-expand) " Use for select text for visual placeholder of snippet. vmap (coc-snippets-select) " Use for jump to next placeholder, it's default of coc.nvim let g:coc_snippet_next = '' " Use for jump to previous placeholder, it's default of coc.nvim let g:coc_snippet_prev = '' " Use for both expand and jump (make expand higher priority.) imap (coc-snippets-expand-jump)