如何在vim(coc)自动完成中上下移动

Meh*_*nya 2 vim

我最近从 youCompleteMe 转移到了 ConquerOfCompletions 并且我在自动完成方面遇到了问题。当我使用YCM 时,浏览用于工作的自动完成选项选项卡。但是现在在COC 中,我从 javascript 完成中使用tsserver我无法使用选项卡。我知道箭头键有效,但它们降低了我的工作效率。请为我提供解决此问题的解决方案,以便我可以轻松访问自动完成选项。

谢谢你

sam*_*njm 6

从 COC 文档中,您需要编辑 .vimrc https://github.com/neoclide/coc.nvim/wiki/Completion-with-sources

使用或自定义键触发完成

您可以使用 coc#refresh() 来触发完成,如下所示:

" 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()
Run Code Online (Sandbox Code Playgroud)

注意:可以由另一个插件重新映射,使用 :verbose imap 检查它是否按预期映射。

" use <c-space>for trigger completion
inoremap <silent><expr> <c-space> coc#refresh()
Run Code Online (Sandbox Code Playgroud)

当您按下 时,某些终端可能会发送,因此您可以改为:

" use <c-space>for trigger completion
inoremap <silent><expr> <NUL> coc#refresh()
Run Code Online (Sandbox Code Playgroud)

改善完成体验

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>"
Run Code Online (Sandbox Code Playgroud)