goland 拼写检查误标 go 标识符因未区分代码符号与自然语言;应禁用“check code literals”并添加常用缩写到自定义词典,保留注释和字符串拼写检查。

GoLand 默认不会对变量名做拼写检查,但当你启用「Spelling」类检查时,它会把所有标识符(包括第三方包导出的变量、函数、类型)当作普通英文单词去查字典,结果就是 ctx、req、grpc、unmarshal 全被标黄,提示“Unknown word”。这不是拼写错误,而是 IDE 没区分「代码符号」和「自然语言」。
为什么 GoLand 会把 grpc 当成错别字
根本原因是 GoLand 的拼写检查器(Settings → Editor → Inspections → Proofreading → Spelling)默认作用域是 entire project,且不识别 Go 语言上下文。它看到 grpc.Server 就拆成两个词 grpc 和 Server,然后拿内置英语词典比对——grpc 不在词典里,于是报红。
- 这个检查只影响编辑器高亮,不影响编译或运行
- 它对首字母大写的导出名(如
HTTPError)误报率更高,因为词典里很少收录驼峰缩写 - 禁用整个 Spelling 检查虽能解决,但会漏掉真正拼错的注释或字符串字面量
关闭拼写检查对 Go 标识符的影响范围
最干净的做法不是关掉拼写检查,而是让它跳过所有 Go 语言标识符。GoLand 提供了基于语法作用域的过滤能力:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 进入 Settings → Editor → Inspections → Proofreading → Spelling
- 取消勾选 Check code literals(关键!这个选项控制是否检查代码中出现的标识符)
- 保持 Check comments 和 Check strings 勾选,这样注释里的 “recieve” 或字符串里的 “seccess” 仍会被捕获
- 如果项目里大量使用缩写(如
srv、hdl),可在下方 Custom dictionary 中添加,避免反复右键“Add to dictionary”
手动添加常见 Go 缩写到自定义词典
即便关了 Check code literals,你写的注释或日志字符串里仍可能出现 ctx、req 这类词被标黄。这时需要把它们加入自定义词典,而不是一个个忽略:
- 点击 Spelling 设置页底部的 Edit custom dictionary
- 逐行添加:复制AI写代码
ctx req resp srv hdl grpc unmarshal marshal
- 注意:词典区分大小写,
Ctx和ctx要分别加;不支持通配符或正则 - 添加后无需重启,下次拼写检查即生效
真正容易被忽略的是:GoLand 的拼写检查器不会读取 go list -f '{{.Name}}' ./... 的结果,也不理解 import "google.golang.org/grpc" 这一行意味着 grpc 是合法标识符前缀。它只认字典和开关,所以靠“让 IDE 理解代码”不现实,只能靠关作用域 + 填词典双保险。










