Ctrl+. 按下无反应、弹窗空白或选项不符,根本原因在于语言服务未就绪、光标未精准落在报错 token 上,或错误类型不属于语言服务器定义的可修复诊断范围。

Ctrl+. 按下没反应、弹窗空白、选项不匹配——不是快捷键坏了,而是语言服务没就绪或光标停错了位置。
光标必须落在报错 token 上才能触发
Quick Fix 不是全局生效的,它只响应当前光标所在的「可诊断 token」。比如 consol.log() 报错,光标得停在 consol 上,停在 .、log 或空格里都不行;import { useState } from 'react' 缺失 useState,光标得落在 useState 上再按 Ctrl+.。
- 波浪线覆盖范围 ≠ 可触发范围:VSCode 只对带下划线的标识符(变量名、函数名、模块名)提供修复建议
- 注释、字符串、括号、运算符上按
Ctrl+.一定没反应 - 右下角状态栏显示
Plain Text或Unknown?点击它手动切到TypeScript、Python等对应语言模式
语言服务没起来,Ctrl+. 就是摆设
VSCode 本身不生成修复建议,全靠后端语言服务器(如 typescript-language-server、pylance、rust-analyzer)返回 codeAction。服务挂了或压根没启动,菜单必然空白。
- 打开
Developer: Toggle Developer Tools,看 Console 有没有Failed to start language client或超时日志 - TS/JS 项目缺
tsconfig.json或jsconfig.json,自动 import 基本失效 - Python 项目没
pyproject.toml或setup.py,Pylance 可能跳过完整分析 - 输入法干扰:中文输入法常把
Ctrl+.当句号吞掉,切英文输入法再试
修复选项和预期不符,别怪 VSCode
VSCode 只原样展示语言服务器返回的建议列表,排序由严重等级 + 修复确定性决定,不是按“你最想要的”排。
-
Cannot find name 'xxx'可能同时给出「创建局部变量」「声明为 global」「忽略此错误」——第一个未必是你想要的 - React 里写
useState报错但没「从 react 导入」选项?大概率是ESLint-plugin-react-hooks没装或禁用了 - Python 的
from requests import get报错,但requests不在PYTHONPATH或当前 workspace 可发现路径下,就不会给导入建议 - ESLint/Prettier 的警告默认不进 Quick Fix,除非装了
esbenp.vscode-eslint并开了"eslint.codeAction.showDocumentation": true
问题面板里点不动?先确认来源是否支持修复
Ctrl+Shift+M 打开的问题面板,条目来源不同,修复能力也不同:来自 TypeScript 或 Pylance 的错误通常可修;来自 ESLint 的 warning,若没配好插件,右键可能只有「隐藏」没有「修复」。
- 点进问题条目后,再按
Ctrl+.是最稳的触发方式——比悬停灯泡更可靠 - 某些 lint 规则(比如复杂逻辑重构类)根本不在 Quick Fix 范围内,只能手动改
- 保存时自动修复要单独配:
"editor.codeActionsOnSave": {"source.fixAll": true},但注意这依赖扩展是否真正实现了fixAll能力
真正卡住人的从来不是「怎么按快捷键」,而是没意识到:语言服务是否真在跑、光标是否真踩中了那个 token、当前报错类型是否属于语言服务器定义的「可修复诊断」——这三个条件缺一不可。


















