-
-
Notifications
You must be signed in to change notification settings - Fork 959
Completion with sources
Coc has full featured support for completion with LSP and doesn't bother with vim's completeopt
.
COC has 3 different trigger modes:
-
always
, the default mode, which triggers completion on a word letter inserted andtriggerCharacters
defined by the current activated sources. -
trigger
, only trigger completion when you typetriggerCharacters
defined by the completion sources. -
none
, disable auto trigger completion, you will have to trigger the completion manually.
You can change the trigger mode by using the configuration file and change this value like:
"suggest.autoTrigger": "trigger"
To support completion trigger on inserting enter, add
"suggest.triggerAfterInsertEnter": true
to your coc-settings.json
.
To change the completion timeout, use:
"suggest.timeout": 500,
To make the automatically select the first completed item, use:
"suggest.noselect": false,
To make the completion trigger with two input characters, use:
"suggest.minTriggerInputLength": 2
To enable the commit characters feature, use:
"suggest.acceptSuggestionOnCommitCharacter": true
To change the indicator of snippet items, use:
"suggest.snippetIndicator": "►"
You can make use of coc#refresh()
for trigger completion like this:
" use <tab> for trigger completion and navigate to the next complete item
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~ '\s'
endfunction
inoremap <silent><expr> <Tab>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<Tab>" :
\ coc#refresh()
Note: the <tab>
could be remapped by another plugin, use :verbose imap <tab>
to check if it's mapped as expected.
" use <c-space>for trigger completion
inoremap <silent><expr> <c-space> coc#refresh()
-
Use
<Tab>
and<S-Tab>
to navigate the completion list:inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>" inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
-
Use
<cr>
to confirm completioninoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
Note:
\<C-g>u
is used to break undo level.To make
<cr>
select the first completion item and confirm the completion when no item has been selected:inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm() : "\<C-g>u\<CR>"
-
Close the preview window when completion is done.
autocmd! CompleteDone * if pumvisible() == 0 | pclose | endif
Name | Shortcut | Description |
---|---|---|
around |
[A] | Words of the current buffer. |
buffer |
[B] | Words of none current buffer. |
file |
[F] | Filename completion, auto detected. |
You can configure completion sources by using coc-settings.json
-
"coc.source.{name}.enable"
: controls if the source is enabled. -
"coc.source.{name}.shortcut"
: shortcut used in completion menu. -
"coc.source.{name}.priority"
: priority of the source, lower priority sources will be sorted after high priority sources when they have same score. -
"coc.source.{name}.disableSyntaxes"
: syntax names used to disable source from completion, eg:["comment", "string"]