Neovim 0.5.1搭配CoC自动补全弹窗破折线溢出残留问题求助
问题原因
这个是Neovim 0.5.x版本的已知浮窗渲染缺陷,搭配iTerm2终端使用时触发:
- Neovim 0.5.1的浮窗边界计算逻辑存在bug,coc-elixir返回的补全建议中的分割线字符宽度计算错误,导致破折线超出补全弹窗边界
- iTerm2默认的字符宽度规则和Neovim 0.5.x的重绘逻辑不兼容,弹窗关闭后溢出区域未被强制重绘,就会出现残留痕迹
问题复现效果:
- 破折线溢出弹窗效果:

- 弹窗关闭后破折线残留效果:

解决办法
按优先级从高到低选择即可:
- *升级Neovim到0.7及以上版本
该版本官方已经修复了所有相关浮窗渲染、字符宽度计算的已知问题,是最彻底的解决方案,升级后不需要额外调整配置就能解决问题。 - *调整CoC配置禁用分割线/限制弹窗宽度
如果暂时无法升级Neovim,可以在Neovim中执行:CocConfig打开CoC配置文件,添加以下配置:
{ "suggest.maxWidth": 70, "suggest.floatConfig": { "border": "none" }, "coc-elixir.suggest.showDocumentation": false }
该配置会限制补全弹窗最大宽度,同时关闭补全弹窗边框、隐藏coc-elixir的文档分割线,从源头上避免破折线溢出。
3. *调整iTerm2字符宽度配置
打开iTerm2偏好设置 → 选择你正在使用的Profile → 切换到「Text」标签页,勾选「Use Unicode version 9+ widths」选项,保存后重启iTerm2即可,修复字符宽度计算不匹配的问题。
4. *临时清屏方案
如果只是偶尔出现残留痕迹,不需要重启Neovim,按Ctrl + L即可强制重绘当前界面,快速清除残留内容。
内容的提问来源于stack exchange,提问作者Mark tM
相关产品推荐
相关产品推荐

