Shift+Alt+F失效的根本原因是格式化链路断裂,需依次修复语言模式错配、未指定默认格式器(如"editor.defaultFormatter")、keybindings.json异常及prettier等环境路径缺失。

Shift+Alt+F(Windows/Linux)或 Shift+Command+F(macOS)按下后没反应、变灰、弹出“No formatter installed”——不是快捷键“变了”,是 VS Code 丢失了格式化能力的上下文。恢复默认行为,关键不在重绑快捷键,而在重建语言→格式化器→配置的链路。
右下角语言模式错配:格式化功能的硬性准入条件
VS Code 格式化不看文件名,只认右下角显示的语言标识。哪怕你打开的是 index.ts,如果状态栏显示 Plain Text 或 JavaScript,Shift+Alt+F 就会直接禁用或走错规则。
- 点击右下角语言标识(如
Plain Text),输入真实语言名(如typescript、vue、json),回车确认 - 检查
files.associations设置:在settings.json中确认是否写了"*.vue": "vue"这类映射,否则.vue文件默认当html处理,Volar不触发 - 别信文件后缀:把
config.yaml改成config.yml可能导致语言识别失败——YAML 扩展通常只监听.yaml
格式化器未激活或未指定:有语言 ≠ 有格式化能力
即使语言模式正确,VS Code 也不会自动选格式化器。它需要明确知道“该用谁”。No formatter installed for 'typescript' 这类报错,90% 是因为没设默认,而非没装扩展。
- 按
Ctrl+Shift+P→ 输入Preferences: Configure Language Specific Settings→ 选当前语言(如typescript)→ 加入:"editor.defaultFormatter": "vscode.typescript-language-features"
- 对 Prettier/Black 等第三方工具,必须手动指定:比如
"editor.defaultFormatter": "esbenp.prettier-vscode",不能只装插件就完事 - 检查扩展启用状态:在扩展面板搜
prettier,确认不是“已禁用”或“仅工作区启用”
keybindings.json 被静默重置:自定义绑定失效的隐藏原因
VS Code 自动更新后,keybindings.json 可能被覆盖、改名(如 .bak)、或写入非法 JSON(多逗号、// 注释)。此时所有自定义快捷键消失,Shift+Alt+F 回退到内置逻辑,但若内置路径也断了,就彻底哑火。
- 按
Ctrl+Shift+P→ 输入Preferences: Open Keyboard Shortcuts (JSON),检查文件是否为空、是否只剩[ ]、开头是否有// - 去文件系统里找
%APPDATA%\Code\User\keybindings.json(Win)或~/Library/Application Support/Code/User/keybindings.json(macOS),看是否被备份成.bak - 别删文件——右键某条快捷键 →
Reset Keybinding逐条恢复更安全;或临时清空内容为[ ],让 VS Code 回退到默认
格式化器环境缺失:报错 “Cannot find module ‘prettier’” 的真实含义
这个错误不是说你没装 Prettier,而是 VS Code 启动时找不到可执行的 prettier CLI。它可能在全局、项目 node_modules、或扩展自带副本里找,但路径优先级混乱,尤其在 pnpm/yarn v4+ 或多根工作区下。
- 在项目根目录终端运行:
npx prettier --version,失败则先修复本地依赖 - 检查设置里
prettier.prettierPath是否指向了不存在的路径(如/usr/local/lib/node_modules/prettier),而项目实际用的是 pnpm link - 禁用
prettier.requireConfig:如果项目没prettier.config.js,该选项开启会导致静默跳过格式化
Plain Text 文件——连入口都没进,自然谈不上恢复“默认”。


















