shift+alt+f没反应是因为vscode未指定prettier为默认格式化器、未安装项目本地prettier包、或语言模式不匹配;需通过format document with设置默认、确认右下角显示prettier、并在项目中执行npm install --save-dev prettier。

装了 Prettier 插件但按 Shift+Alt+F 没反应、保存后代码没变化——不是插件没装好,而是 VSCode 根本没让它干活。核心就三点:指定它为默认格式化器、打开保存自动格式化开关、确保项目里有可用的 prettier 可执行模块。
为什么按 Shift+Alt+F 没反应?
VSCode 默认不把 Prettier 当格式化工具用,它只认内置格式器(比如 vscode.typescript-language-features)或你手动指定的那个。即使插件已安装,没设为默认,快捷键就等于按在空气上。
- 打开命令面板:
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS) - 输入
Format Document With→ 选Configure Default Formatter→ 选esbenp.prettier-vscode - 右下角状态栏点格式化器图标,确认显示的是
Prettier,不是ESLint或其他 - 如果显示“No formatter available”,说明当前文件语言模式不对(比如
.vue被识别成Plain Text),需点击右下角语言名手动切换
保存时自动格式化怎么开才真正生效?
editor.formatOnSave 是总开关,但它只起作用的前提是:当前语言已绑定 prettier 为默认格式化器。否则 VSCode 会默默调用别的格式器,甚至什么也不做。
- 全局开启:
Ctrl+,打开设置 → 搜format on save→ 勾选Editor: Format On Save - 更稳妥的做法是直接编辑
settings.json,加入这两行:"editor.formatOnSave": true"editor.defaultFormatter": "esbenp.pretterr-vscode" - 对特定语言单独绑定(避免 Vue/TS 文件被 Vetur 或 TS 自带格式器劫持):
"[vue]": {"editor.defaultFormatter": "esbenp.prettier-vscode"}"[typescript]": {"editor.defaultFormatter": "esbenp.prettier-vscode"}
为什么装了插件还要装 prettier 包?
Prettier 插件本身不带 prettier CLI,它只是个“调度员”,运行时会去项目里找 node_modules/.bin/prettier。找不到就报错:Failed to load module 'prettier'。
- 推荐在项目根目录执行:
npm install --save-dev prettier(或yarn add -D prettier) - 不要只靠全局安装(
npm install -g prettier),尤其在 macOS + nvm 或 Windows WSL 环境下,VSCode 很可能找不到路径 - 如果项目已有
.prettierrc.json或prettier.config.js,插件会自动读取;没有则 fallback 到内置默认(tabWidth: 2,semi: true),很可能和团队规范冲突
JSON / Markdown / YAML 文件怎么也用 Prettier?
Prettier 插件默认只绑定 javascript、typescript、html 等语言 ID,.json、.md、.yml 这类不会响应格式化命令,除非你显式告诉 VSCode:“这些语言也归 Prettier 管”。
- 在
settings.json中添加语言专属配置:"[json]": {"editor.defaultFormatter": "esbenp.prettier-vscode"}"[markdown]": {"editor.defaultFormatter": "esbenp.prettier-vscode"}"[yaml]": {"editor.defaultFormatter": "esbenp.prettier-vscode"} - 注意方括号里是语言 ID(
json),不是文件扩展名(.json);markdown对应.md和.markdown - 别漏掉
[jsonc](VSCode 配置文件常用),否则settings.json自身也无法被格式化
最容易被忽略的其实是语言绑定和本地 prettier 包的双重存在——VSCode 设置里写了 defaultFormatter,但项目没装 prettier,或者装了却没配语言 ID,结果就是:看起来全设好了,实际一动不动。











