先确认按键是否送达vs code,若控制台无日志则被系统/输入法劫持;再检查右下角语言模式是否正确、keybindings.json有无减号禁用项、editor.defaultformatter是否按语言id精确配置。

快捷键按了没反应?先确认按键是否送达 VS Code
VS Code 根本没收到你的 Shift+Alt+F,不是它不干活,是键被截胡了。Windows 上搜狗拼音、微软拼音默认用 Shift+Alt 切输入法;macOS 里 Cmd+Shift+F 可能被 Spotlight 占用。别猜,直接验证:
- 打开系统键盘快捷键设置,逐项关闭「输入源切换」「Spotlight」「辅助功能」中可能冲突的组合
- 在 VS Code 里按
Ctrl+Shift+P(Win)或Cmd+Shift+P(Mac),输入Developer: Toggle Keybinding Troubleshooter回车,再按失效快捷键 - 如果面板里一条记录都没有 → 键根本没传进来,问题在系统/输入法/安全软件(如深信服 EDR、360)
快捷键灰色不可点?语言模式和格式化器没对上
右下角显示 JavaScript,但 Shift+Alt+F 还是灰的,说明 VS Code 认为“当前文件不支持格式化”。核心就两点:语言 ID 拼错,或该语言没配默认格式化器。
- 点击右下角语言标识,确认不是
Plain Text,也不是拼写错误(typescriptreact≠typescript) - 打开
settings.json,搜索editor.defaultFormatter,必须有对应语言块,例如:"[javascript]": {"editor.defaultFormatter": "esbenp.prettier-vscode"} - 确保该扩展已启用;若用了 ESLint,得关掉它的格式能力:
"eslint.format.enable": false - 删掉负向覆盖项,比如
"[javascript]": { "editor.formatOnSave": false }会让整个格式化链路静默禁用
手动改了 keybindings.json 却没生效?三个静默失效坑
VS Code 不报错也不提示,改完就当没这回事——这是最让人抓狂的部分。常见失效原因:
-
when表达式拼错,比如editorTextFocu少个s,整条配置直接忽略 - JSON 语法错误:多逗号、少引号、末尾多逗号,VS Code 全盘静默丢弃
- 没加
when条件导致全局绑定,结果和终端(如Ctrl+Shift+P被微信截图拦截)或系统热键打架
安全做法是:先清空 keybindings.json(只留 []),再一条条加,每加一条都用 Troubleshooter 验证。
多个格式化插件共存时,Python/HTML 等语言容易乱跳
Python 文件保存后缩进变来变去,HTML 格式化后标签换行错乱——这不是 BUG,是 VS Code 同时加载了 black、autopep8 和 prettier,且没明确指定谁说了算。
- 必须用语言专属块配置,全局
editor.defaultFormatter对.py或.html文件无效 - Python 示例:
"[python]": { "editor.defaultFormatter": "ms-python.black-formatter", "python.formatting.provider": "black" } - HTML 示例:
"[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },同时确保html.format.enable为true - 项目根目录加
prettier.config.js,否则 Prettier 可能跳过 HTML 文件
语言块配置是强制要求,不是可选;漏掉这一层,再多插件、再细调参也没用。











