error lens 行尾无提示是因为未获取到诊断数据,它仅展示 typescript server、eslint、pylance 等工具上报的错误;需确认语言服务器正常运行、语言模式正确、对应扩展已启用,并检查 severity 设置、软换行、缩进及缓存问题。

装完 Error Lens 插件后,代码行尾还是空的?不是插件没生效,而是它压根没拿到诊断数据——Error Lens 本身不检查代码,只负责把 TypeScript Server、ESLint、Pylance 这些工具报出来的错误“贴”到行尾。没报错,它就无事可贴。
为什么行尾没显示任何提示?查语言服务器是否真在跑
常见现象是:文件里有波浪线,Problems 面板里有报错,但行尾干干净净。这基本等于语言服务没起来。
- 看右下角状态栏:是否显示类似
TypeScript、Python (Pylance)、JavaScript (Volar)的语言模式?如果显示的是Plain Text,点它手动切对语言 - 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),运行Developer: Toggle Developer Tools,在 Console 里搜language server或failed to start,看有没有启动失败日志 - 确认对应语言扩展已安装且启用:比如 Python 项目必须装
Python(Microsoft)或Pylance;TS/JS 项目依赖内置的TypeScript and JavaScript Language Features,但可能被禁用(检查设置里typescript.preferences.includePackageJsonAutoImports是否为auto可辅助判断)
只显示 error,warning 和 info 不见了?改 errorLens.severity
默认只渲染 error 级别,这是防信息过载的设计,不是 bug。想让 warning 也上行尾,得显式放开。
- 打开
settings.json,加这一行:"errorLens.severity": ["error", "warning", "info"] - 注意必须是字符串数组,不能写成
"error,warning"这种字符串 - 改完不用重启,但已有文件需触发诊断刷新:保存一次、切换标签页、或运行命令
Developer: Restart Language Server
提示文字太长遮代码,或位置错乱?关软换行 + 调截断长度
行尾提示错位、跳到下一行、甚至贴在注释后面——大概率是编辑器的软换行(word wrap)或混合缩进搞的鬼。
- 先关软换行:
"editor.wordWrap": "off"(全局或工作区设置) - 统一缩进:确保
editor.detectIndentation为true,然后对当前文件执行Editor: Reindent Lines(Shift+Alt+F) - 限制长度防遮挡:
"errorLens.maxMessageLength": 60(数值按需调,太小会砍掉关键信息) - 若仍错位,临时禁用其他装饰类插件(如
Bracket Pair Colorizer、Highlight Matching Tag),排除叠加干扰
保存后错误还挂着不消失?不是插件卡,是 LSP 缓存没更新
删掉报错代码,行尾提示却迟迟不退——这不是 Error Lens 的问题,是底层语言服务器(尤其是 TypeScript、Pylance)缓存了 AST 或延迟推送诊断。
- 手动触发重检:保存文件、光标移出再移回、或运行
Developer: Restart Language Server - 对 TypeScript 项目,可尝试关闭
typescript.preferences.useSemanticColoring(极少数情况能缓解诊断延迟) - 不要依赖“立刻消失”,LSP 的诊断节奏由语言本身决定,
Error Lens只是忠实反映它给的数据
最常被忽略的一点:它完全不生产诊断,只搬运。你看到的每一行尾提示,背后都绑着一个正在运行的语言服务器或 linter。没它们,Error Lens 就是空壳——装得再快,也得先配好“上游”。











