开发环境
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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。