开发环境
vim + golang + vim-go + ale + Ycm
vim-go + ale 提供语言检测, 自动提示, 自动修复支持
Ycm 提供补全支持
vim 版本: vim9.0
golang: go version go1.20 darwin/amd64问题
基于以上环境, 开发中定义泛型类型时总是报错, 如下
expected ']', found string踩坑过程
这个错误属于代码检测, 且通过大量查询定位到了gopls版本问题导致的.
低版本的gopls 不支持泛型
因为vim-go和ale 均具备代码检测, 都可能使用gopls, 因此在vim中,
:GoInstallBinaries更新了全部golang二进制文件, 且查看gopls的版本已经是0.11了
ale 中禁用了gopls 作为linter
打开go文件, 该错误仍存在.
怀疑不是这两个插件导致的, 因此在.vimrc中, 禁用了这两个插件, 再重新打开go文件, 仍有错误, 由此确认确实不是这两个插件导致的.
最后将Ycm插件禁用后, 该错误消失了. 由此确认是Ycm 插件导致的
解决
vim 中运行 :YcmDebugInfo 果然发现有gopls 调用
查看执行的gopls路径, 该版本为
与vim-go里更新的gopls 路径不一致且版本不一致
查看官方文档, 配置 let g:ycm_gopls_binary_path = "gopls"
即可调用系系统路径下的gopls
修改该配置后, 重新打go文件, 错误消失
在此记录, 以上!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。