开发环境

vim + golang + vim-go + ale + Ycm

vim-go + ale 提供语言检测, 主动提醒, 主动修复反对

Ycm 提供补全反对

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

问题

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

expected ']', found string

踩坑过程

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

低版本的gopls 不反对泛型

因为vim-goale 均具备代码检测, 都可能应用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文件, 谬误隐没

在此记录, 以上!