如何在 vim 或 neovim 中触发自动完成建议框(插件 neoclide/coc.vim)

How to trigger autocomplete suggestion box in vim or neovim (Plugin neoclide/coc.vim)

我是 Neovim 用户

并且我使用插件 neoclide/coc.vim 进行自动补全

但是当我的光标移出时,我又无法获得建议框
(这​​个框怎么叫?建议框还是提示框?我想知道这个框的名字)

我想触发一下,再看看,有什么命令或者变量吗?

是的,答案在 CoC 的首页 github project。您需要将某些内容映射到 coc#refresh()。例如,要使用 Ctrl + Space 触发完成,您需要在 vimrc 中添加以下内容:

inoremap <silent><expr> <c-space> coc#refresh()

项目页面上有更多示例。

我在https://github.com/neoclide/coc.nvim/issues/2299#issuecomment-686293001

中发表了评论

The suggestion box in your image is signatureHelp. If you want to reopen it, you need to trigger triggerCharacters in your function, usually is ( and ,. The triggerCharacters is defined by LS.

TLDR: try this Ctrl+@

我在 neoclide/coc.nvim 的自述文件中找到了这个:

" Use <c-space> to trigger completion.
if has('nvim')
  inoremap <silent><expr> <c-space> coc#refresh()
else
  inoremap <silent><expr> <c-@> coc#refresh()
endif

这里奇怪的是,Ctrl+Space不是工作,尽管使用 neovim 而不是 vim.

但是从终端仿真器的角度来看,有一个很好的技巧可以让您获得所需的键绑定:

  1. 进入insert模式
  2. Ctrl+v
  3. 然后按你要绑定的键,Ctrl+Space

我的终端似乎无法识别使用 Ctrl 和 Space。 “我认为这才是真正的问题!”


编辑

解决步骤:

  1. 我稍微更改了默认的 coc 配置:
    inoremap <silent><expr> <c-space> coc#refresh()
    inoremap <silent><expr> <c-@> coc#refresh()
    
  2. 我尝试了 bash 因为我使用 zsh 作为 shell,但问题仍然存在那里。
  3. 然后我尝试了另一个终端模拟器,问题解决了,alhamdulilah。