ErrorLens 不显示错误是因为依赖的语言服务器未启动或未正确配置,需检查对应语言扩展是否安装、状态栏语言模式是否正确,并查看开发者工具中的启动日志。

为什么 ErrorLens 显示不了错误?检查语言服务器是否就位
内联错误提示不是 VSCode 自带功能,它完全依赖后端语言服务器(LSP)上报诊断信息。ErrorLens 本身只是“翻译器”——把 LSP 的 diagnostics 渲染成行内高亮。如果没看到提示,大概率是语言支持没装或没启动。
- 确认已安装对应语言扩展:比如 Python 项目必须有
Python(Microsoft 官方)或Pylance;TypeScript/JS 项目需TypeScript and JavaScript Language Features(内置但可能被禁用) - 打开命令面板(
Ctrl+Shift+P),运行Developer: Toggle Developer Tools,在 Console 里搜language server或failed to start,看是否有启动失败日志 - 检查状态栏右下角语言模式是否正确(比如明明是
.ts文件却显示为Plain Text)——这会导致 LSP 根本不激活
ErrorLens 不显示警告(warning),只显示错误(error)?改配置项
默认情况下,ErrorLens 只渲染 error 级别诊断,warning 和 info 被忽略。这不是 bug,是插件的保守默认策略,避免行内信息过载。
- 打开设置(
Ctrl+,),搜索error lens severity,找到Error Lens: Severity配置项 - 它接受数组值,例如:
["error", "warning", "info"]—— 注意必须是字符串数组,不能写成"error,warning" - 修改后无需重启,但已有文件需手动触发诊断刷新:保存文件、切换标签页、或运行命令
Developer: Restart Language Server
内联提示位置偏移、错行?和编辑器缩进/换行逻辑冲突
VSCode 的行号和实际文本渲染位置由 editor model 决定,而 ErrorLens 是基于 editor decorations 插入 DOM 元素。当代码含非标准换行(如长字符串自动折行)、混合空格/Tab 缩进、或启用了 editor.wrappingStrategy: "advanced" 时,装饰层容易错位。
- 优先关闭软换行:
editor.wordWrap: "off"(在用户设置或工作区设置中) - 确保文件缩进统一:用
editor.detectIndentation自动识别后,再手动执行Editor: Reindent Lines(Shift+Alt+F) - 若仍错位,临时禁用其他装饰类插件(如
Highlight Matching Tag、Bracket Pair Colorizer),排查叠加干扰
为什么保存后错误提示没消失?LSP 缓存或诊断未及时更新
很多语言服务器(尤其是 TypeScript、Python 的 Pylance)会缓存 AST 或延迟发送诊断,导致你删掉报错代码后,ErrorLens 还挂着旧提示。这不是插件问题,而是上游诊断数据没变。
- 强制刷新当前文件诊断:快捷键
Ctrl+Shift+P→ 输入并运行TypeScript: Restart TS server(TS/JS)或Python: Restart Language Server - 检查是否启用了
typescript.preferences.includePackageJsonAutoImports类似实验性配置——某些不稳定选项会让诊断卡在旧状态 - 极少数情况是文件被 VSCode 视为“未保存的临时副本”,确认右上角无
●脏标记,且磁盘上文件时间戳已更新
真正麻烦的是多根工作区里不同文件夹启用不同 LSP 版本,或者 workspace settings 里 typescript.preferences.enableAutoImportSuggestions 和插件冲突——这种问题不会报错,只会让诊断静默失效,得逐个关掉扩展来定位。


















