按 Ctrl+Shift+M 打不开错误是因为问题未被语言服务上报:语言模式错误(如显示 Plain Text)、文件被排除、缺少 tsconfig.json/eslint.config.js 等配置、语言服务器未运行,或终端错误未配 problemMatcher 导致无法解析。

按 Ctrl+Shift+M(Windows/Linux)或 Cmd+Shift+M(macOS)直接打开问题面板,这是最可靠、无需额外配置的入口;但前提是当前文件已被语言服务识别且存在可报告的问题——不是快捷键失效,而是真没检测到错误。
为什么按了 Ctrl+Shift+M 却看不到错误?
常见原因不是快捷键坏了,而是问题根本没被上报:
- 当前文件语言模式不对:右下角显示
Plain Text而非TypeScript或Python,需右键标签 →Change Language Mode手动设对 - 文件路径被忽略:在
.gitignore、files.exclude或search.exclude中被排除,语言服务器会跳过扫描 - 缺少必要配置:TypeScript 项目没
tsconfig.json,ESLint 项目没eslint.config.js或.eslintrc.cjs,Pylance 不会主动启用完整检查 - 语言服务器未启动:打开命令面板(
Ctrl+Shift+P),运行Developer: Show Running Extensions,确认对应服务状态为“Running”
错误提示只在编辑器里闪一下,怎么留住看清楚?
悬停波浪线是最快方式,但信息易消失。更稳的做法是:
- 把光标停在带红色/黄色波浪线的代码上,等提示框弹出后,**不要移开鼠标**,它会保持几秒
- 按
Ctrl+.(Windows/Linux)或Cmd+.(macOS)触发快速修复菜单,错误描述会同时显示在菜单顶部 - 打开输出面板(
Ctrl+Shift+U),在下拉菜单中选择对应语言服务(如TypeScript、ESLint),里面会保留完整诊断日志,包括被截断的长错误信息
终端报错一堆,但问题面板空空如也,怎么办?
这说明错误来自构建命令(如 tsc --noEmit、npm run build),但没被 VSCode 解析进面板。关键要配 problemMatcher:
- 如果是 TypeScript,默认
$tscmatcher 要求输出含file.ts(12,5): error TS2304格式;若用vue-tsc或自定义脚本,需在tasks.json里显式写"problemMatcher": "$tsc-watch" - Go/Rust/Python 用
make或cargo build时,必须手动加 matcher,否则错误只留在终端,不进面板 - 检查
tasks.json中的args是否含--no-color—— 彩色 ANSI 码会干扰 matcher 解析,导致匹配失败
真正卡住人的地方往往不是“怎么打开面板”,而是“为什么它不显示我刚看到的那条错误”——问题面板只反映语言服务已知的信息,它不会猜你写了什么,也不会自动加载没装的插件或读取没放对位置的配置文件。


















