coc.nvim 补全常见问题

coc.nvim 是一个补全插件,它可以补全很多东西,比如:函数、变量、关键字、文件名、路径、标签、颜色、emoji 等等。

coc.nvim 0.0.82 开始使用自定义的补全菜单,而不是 vim 自带的 popupmenu,这样可以让补全菜单更加灵活,比如:可以使用图标、可以使用不同颜色等等。

以下是一些常见问题的解决方案。

禁用默认的选中补全项
默认的选中项可以更好支持 preselct,selection, virtual text 等功能,如果你不需要这些功能,可以在设置文件中添加:

"suggest.noselect": true,

选中项背景色设置
由于部分主题对 Pmenu 使用了高对比颜色,结果是其中内容高亮后显示效果很差,现在的 coc.nvim 会检测颜色对比度并自动设置默认值,如果你觉得效果不好,可以在 vimrc 中自定义 CocMenuSel :

hi CocMenuSel ctermbg=237 guibg=#13354A

切换选项时发生了预期外的行为
为了支持重做操作,coc.nvim 会在切换选项时使用 complete() 来插入 word,此时会触发 CompleteDone , 可以在 vimrc 文件中添加:

inoremap <silent><expr> <C-n> coc#pum#visible() ? coc#pum#next(0) : "\<C-n>"
inoremap <silent><expr> <C-p> coc#pum#visible() ? coc#pum#prev(0) : "\<C-p>"

来禁用掉切换时的插入,或者禁用插件监听 CompleteDone 事件的行为。

自定义补全项类型的图标
安装一个 nerd font 字体,设置 terminal 使用,然后设置文件中添加:

"suggest.completionItemKindLabels": {
    "constructor": "\ufb25",
    "keyword": "\uf1de",
    "variable": "\ue79b",
    "value": "\uf89f",
    "operator": "\u03a8",
    "function": "\u0192",
    "reference": "\ufa46",
    "constant": "\uf8fe",
    "method": "\uf09a",
    "struct": "\ufb44",
    "class": "\uf0e8",
    "interface": "\uf417",
    "text": "\ue612",
    "enum": "\uf435",
    "enumMember": "\uf02b",
    "module": "\uf40d",
    "color": "\ue22b",
    "property": "\ue624",
    "field": "\uf9be",
    "unit": "\uf475",
    "event": "\ufacd",
    "file": "\uf723",
    "folder": "\uf114",
    "snippet": "\ue60b",
    "typeParameter": "\uf728",
    "default": " "
  }

补全菜单背景透明

neovim 中可以设置 set pumblend=15

补全菜单太长
vimrc 中设置 set pumheight=10

调整菜单中的选项
设置 suggest.formatItems,例如:

"suggest.formatItems": ["abbr", "menu", "kind"],

copilot.vim 提供选项时,无法使用 tab 切换
copilot.vim 对原生的 pumvisible() 进行了判定,所以你设置的 tab 可以正常工作,如果你需要 tab 优先执行切换选项,而不是完成 copilot 的选项,可以在 vimrc 中设置:

let g:copilot_no_tab_map = v:true
inoremap <silent><expr> <TAB>
      \ coc#pum#visible() ? coc#pum#next(1):
      \ exists('b:_copilot.suggestions') ? copilot#Accept("\<CR>") :
      \ CheckBackSpace() ? "\<Tab>" :
      \ coc#refresh()

推荐给 copilot 设置单独的按键,例如:

let g:copilot_no_tab_map = v:true
imap <silent><script><expr> <C-y> copilot#Accept("\<CR>")
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值