如何通过Error Lens在VSCode中实现代码行错误信息的高亮显示?
- 内容介绍
- 文章标签
- 相关推荐
本文共计993个文字,预计阅读时间需要4分钟。
安装了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 项目必须装
ms-python.python或ms-python.pylance;TS/JS 项目依赖内置的TypeScript and JavaScript Language Features,但它可能被禁用(检查设置里typescript.preferences.includePackageJsonAutoImports是否为auto可辅助判断)
errorLens.severity 配置不对,warning 和 info 就不会上行尾
默认只渲染 error 级别,这是防信息过载的设计,不是 bug。想让 warning 也上行尾,得显式放开。
- 打开
settings.json,加这一行:"errorLens.severity": ["error", "warning", "info"] - 注意必须是字符串数组,不能写成
"error,warning"这种字符串 - 改完不用重启,但已有文件需触发诊断刷新:保存一次、切换标签页、或运行命令
Developer: Restart Language Server
行尾提示错位、跳行、遮挡代码?关软换行 + 调截断长度
行尾提示错位、跳到下一行、甚至贴在注释后面——大概率是编辑器的软换行或混合缩进搞的鬼。
- 先关软换行:
"editor.wordWrap": "off"(全局或工作区设置) - 统一缩进:确保
editor.detectIndentation为true,然后对当前文件执行Editor: Reindent Lines(Shift+Alt+F) - 限制长度防遮挡:
"errorLens.maxMessageLength": 60(数值按需调,太小会砍掉关键信息) - 若仍错位,临时禁用其他装饰类插件(如
Bracket Pair Colorizer、Highlight Matching Tag)
TS/JS 项目里提示不全或延迟高?版本不一致是元凶
本质是 TypeScript 语言服务响应慢或诊断缓存未命中。VSCode 内置 TS Server 和你项目里 node_modules/.bin/tsc 版本不一致时最明显——比如项目用 TS 5.3,VSCode 用 TS 4.9,就会漏报 const 类型推导错误。
- 在 TS 文件里按
Ctrl+Shift+P→ 运行TypeScript: Select TypeScript Version,选Use Workspace Version - 关闭
"typescript.preferences.includePackageJsonAutoImports": "auto",这个选项会触发额外的node_modules扫描,拖慢诊断 - 如果用
tsconfig.json的"composite": true,确保所有引用项目都已构建(tsc -b),否则跨项目类型检查会失效
最常被忽略的点:errorLens.showInline 必须为 true,否则行尾永远空白——虽然默认是 true,但某些旧版本或重置设置后可能被关掉。别只盯着 severity,先确认这个开关开着。
本文共计993个文字,预计阅读时间需要4分钟。
安装了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 项目必须装
ms-python.python或ms-python.pylance;TS/JS 项目依赖内置的TypeScript and JavaScript Language Features,但它可能被禁用(检查设置里typescript.preferences.includePackageJsonAutoImports是否为auto可辅助判断)
errorLens.severity 配置不对,warning 和 info 就不会上行尾
默认只渲染 error 级别,这是防信息过载的设计,不是 bug。想让 warning 也上行尾,得显式放开。
- 打开
settings.json,加这一行:"errorLens.severity": ["error", "warning", "info"] - 注意必须是字符串数组,不能写成
"error,warning"这种字符串 - 改完不用重启,但已有文件需触发诊断刷新:保存一次、切换标签页、或运行命令
Developer: Restart Language Server
行尾提示错位、跳行、遮挡代码?关软换行 + 调截断长度
行尾提示错位、跳到下一行、甚至贴在注释后面——大概率是编辑器的软换行或混合缩进搞的鬼。
- 先关软换行:
"editor.wordWrap": "off"(全局或工作区设置) - 统一缩进:确保
editor.detectIndentation为true,然后对当前文件执行Editor: Reindent Lines(Shift+Alt+F) - 限制长度防遮挡:
"errorLens.maxMessageLength": 60(数值按需调,太小会砍掉关键信息) - 若仍错位,临时禁用其他装饰类插件(如
Bracket Pair Colorizer、Highlight Matching Tag)
TS/JS 项目里提示不全或延迟高?版本不一致是元凶
本质是 TypeScript 语言服务响应慢或诊断缓存未命中。VSCode 内置 TS Server 和你项目里 node_modules/.bin/tsc 版本不一致时最明显——比如项目用 TS 5.3,VSCode 用 TS 4.9,就会漏报 const 类型推导错误。
- 在 TS 文件里按
Ctrl+Shift+P→ 运行TypeScript: Select TypeScript Version,选Use Workspace Version - 关闭
"typescript.preferences.includePackageJsonAutoImports": "auto",这个选项会触发额外的node_modules扫描,拖慢诊断 - 如果用
tsconfig.json的"composite": true,确保所有引用项目都已构建(tsc -b),否则跨项目类型检查会失效
最常被忽略的点:errorLens.showInline 必须为 true,否则行尾永远空白——虽然默认是 true,但某些旧版本或重置设置后可能被关掉。别只盯着 severity,先确认这个开关开着。

