如何重新映射 coc.nvim 自动完成键?

And*_*lva 2 vim autocomplete neovim coc.nvim

我试图更改我的 coc.nvim 自动完成键,并在 Stack Overflow 中找到了这个问题,但是回答这个问题的人并没有很好地解释如何根据需要自定义它,所以我将解释它以帮助 NeoVim像我一样为此绞尽脑汁的用户。

And*_*lva 5

简答

如果您想绑定Tab自动完成功能,请将其粘贴到您的 .vimrc 或 init.vim 中

inoremap <silent><expr> <tab> pumvisible() ? coc#_select_confirm() : "\<C-g>u\<TAB>"
inoremap <silent><expr> <cr> "\<c-g>u\<CR>"
Run Code Online (Sandbox Code Playgroud)

详细解答

因此,您必须进行 2 次插入模式重新映射,在这种情况下,我会将完成重新映射到Tab键。

inoremap <silent><expr> <tab> pumvisible() ? coc#_select_confirm() : "\<C-g>u\<TAB>"
Run Code Online (Sandbox Code Playgroud)

Obs:如果你想将其他键绑定到自动完成:

inoremap <silent><expr> [the key that you want to autocomplete] pumvisible() ? coc#_select_confirm() : "\<C-g>u\<TAB>"
Run Code Online (Sandbox Code Playgroud)

现在,CoC 也将使用Tab密钥自动完成,但Enter也是自动完成,我想Enter仅通过 be进行绑定Enter,而不是自动完成密钥。

在 VimScript 中Enter表示为<cr>

inoremap <silent><expr> <cr> "\<c-g>u\<cr>"
Run Code Online (Sandbox Code Playgroud)

观察:

inoremap <silent><expr> [this is the current autocompletion key] "\<c-g>u\[this is the bind that I am giving to the key]"
Run Code Online (Sandbox Code Playgroud)