
保存时自动格式化不生效?检查 editor.formatOnSave 是否真开启
VSCode 默认关闭保存自动格式化,光装了 Prettier 或 ESLint 插件没用。必须手动打开开关,且这个设置可能被工作区配置覆盖。
-
editor.formatOnSave必须设为true(全局或工作区 settings.json 中) - 如果项目根目录有
.vscode/settings.json,它会优先于用户设置,务必检查里面是否写了"editor.formatOnSave": false - 某些语言(如 Python)默认没配格式化器,即使开了
formatOnSave也无反应——得先装插件并指定editor.defaultFormatter
格式化器选不对,保存后代码纹丝不动
VSCode 不自带格式化逻辑,它只调用你指定的 formatter。没选对、没装好、或者类型不匹配,就会“看起来点了保存,实际啥也没干”。
- 右下角状态栏点击语言标识(如 “JavaScript”),选 “Configure Default Formatter”,挑已安装的插件(比如
esbenp.prettier-vscode) - TypeScript 文件若用
eslint格式化,需额外启用eslint.format.enable并确保eslint.packageManager正确(npm/yarn/pnpm) - Vue 单文件组件要格式化
<template>和<script>,得同时配好prettier+vue-language-features,且vetur.format.defaultFormatter.html等配置不能漏
保存时格式化卡顿或报错 ESLint: Failed to load config
常见于本地项目依赖未安装、Node 版本不匹配,或 ESLint 配置路径出错。VSCode 启动时未必加载项目级配置,保存那一刻才去读,失败就静默跳过。
- 终端进项目根目录,运行
npx eslint --version确认能执行;若报错,先npm install eslint --save-dev - 检查
.eslintrc.cjs或eslint.config.js是否存在且导出合法配置;ESLint v8.50+ 推荐新格式,旧写法可能被忽略 - VSCode 设置里关掉
eslint.packageManager自动探测,显式设成项目实际用的包管理器名("pnpm"而非"npm") - 格式化慢?加
"editor.formatOnSaveTimeout": 5000防止超时中断,但更该查是不是eslint --fix在跑全量检查
团队协作中格式化行为不一致?别只靠个人设置
不同人 VSCode 配置不同,单靠 settings.json 容易漏配。真正可靠的方案是把格式规则下沉到项目本身,并让编辑器自动识别。
- 在项目根目录放
.prettierrc和.eslintrc.cjs,VSCode 的 Prettier/ESLint 插件默认会读取它们 - 加
.editorconfig统一缩进、换行等基础项,避免插件未覆盖时出现差异 - 禁用全局
editor.formatOnSave,改用工作区设置(.vscode/settings.json),并提交进 Git——但注意别把files.autoSave这类纯个人偏好也塞进去
最常被忽略的是:格式化器本身版本不一致。Prettier 2.x 和 3.x 对空格、括号的处理有差异,团队必须锁死 devDependencies 版本,否则保存即引入风格冲突。










