error lens 不在运行时高亮错误,仅渲染语言服务器(lsp)推送的静态诊断;行尾无提示主因是 lsp 未启动、语言模式错误、severity 配置不匹配或软换行/缩进干扰。

Error Lens 不会“运行时”高亮错误——它只显示语言服务器(LSP)在编辑时已分析出的静态诊断,不是终端里 node 或 python 报的错。
为什么装了 Error Lens 却没行尾提示?
常见现象是:波浪线有、Problems 面板里有报错,但行尾空着。这不是插件失效,而是它根本没收到诊断数据。
- 检查右下角状态栏语言模式:必须是
TypeScript、Python (Pylance)、JavaScript (Volar)等,不能是Plain Text - 按
Ctrl+Shift+P运行Developer: Toggle Developer Tools,在 Console 里搜failed to start language server或tsserver/pyright相关错误 - 确认对应语言扩展已安装且启用:Python 项目需
ms-python.pylance(不是旧版ms-python.python),TS/JS 项目确保内置的TypeScript and JavaScript Language Features没被禁用 - 远程开发(SSH/WSL)时,Error Lens 和语言扩展都必须装在远程环境,本地装无效
如何让 warning 和 info 也显示在行尾?
默认只渲染 error 级别,这是防信息过载的设计,不是 bug。想让 warning(比如 ESLint 的 no-console)上行尾,必须显式放开配置。
- 打开
settings.json,添加:"errorLens.severity": ["error", "warning", "info"]—— 注意必须是数组,不能写成字符串"error,warning" - 改完无需重启 VSCode,但已有文件不会自动刷新诊断;保存一次、切换标签页,或运行命令
Developer: Restart Language Server - 若只想显示 warning 及以上,用
["error", "warning"];设成["error"]就回到默认行为
行尾提示错位、跳行、遮挡代码怎么办?
VSCode 的软换行、混合缩进、或高级换行策略会导致装饰层定位偏移,Error Lens 渲染位置依赖 editor model 的精确计算。
- 临时关闭软换行:
"editor.wordWrap": "off"(全局或工作区设置) - 统一缩进:确保
"editor.detectIndentation": true,再对当前文件执行Editor: Reindent Lines(快捷键Shift+Alt+F) - 限制提示长度防遮挡:
"errorLens.maxMessageLength": 60(数值太小会砍掉关键信息,别设为 0) - 若仍错位,临时禁用其他装饰类插件:
Bracket Pair Colorizer、Highlight Matching Tag,排查叠加干扰
最常被忽略的一点:Error Lens 从不解析终端输出,也不监听 console.error 或运行时抛出的 ReferenceError。它只消费 LSP 推送的静态诊断——这意味着你写的 console.log(undeclaredVar) 是否报错,完全取决于 TypeScript Server 或 ESLint 是否覆盖该文件、是否启用、是否完成首次分析。没有 LSP,就没有行尾文字。











