开发环境

vim + golang + vim-go + ale + Ycm

vim-go + ale 提供语言检测, 自动提示, 自动修复支持

Ycm 提供补全支持

vim 版本: vim9.0
golang: go version go1.20 darwin/amd64

问题

基于以上环境, 开发中定义泛型类型时总是报错, 如下

image.png

expected ']', found string

踩坑过程

这个错误属于代码检测, 且通过大量查询定位到了gopls版本问题导致的.

低版本的gopls 不支持泛型

因为vim-goale 均具备代码检测, 都可能使用gopls, 因此在vim中,

:GoInstallBinaries

更新了全部golang二进制文件, 且查看gopls的版本已经是0.11
image.png

ale 中禁用了gopls 作为linter

image.png

打开go文件, 该错误仍存在.

怀疑不是这两个插件导致的, 因此在.vimrc中, 禁用了这两个插件, 再重新打开go文件, 仍有错误, 由此确认确实不是这两个插件导致的.

最后将Ycm插件禁用后, 该错误消失了. 由此确认是Ycm 插件导致的

解决

vim 中运行 :YcmDebugInfo 果然发现有gopls 调用

image.png

查看执行的gopls路径, 该版本为
image.png

vim-go里更新的gopls 路径不一致且版本不一致

查看官方文档, 配置 let g:ycm_gopls_binary_path = "gopls"
image.png
即可调用系系统路径下的gopls

修改该配置后, 重新打go文件, 错误消失

在此记录, 以上!


Yi_Zhi_Yu
1.9k 声望69 粉丝

PHPer,Sphinxer,Giter,Sheller,Pythoner