editor.formatOnSave 默认为 false,需手动设为 true;每种语言须单独指定 defaultFormatter;格式化器需正确安装并激活;多格式化器共存易冲突,应禁用非主力扩展。

editor.formatOnSave 必须手动开启,它默认是 false
VSCode 不会默认在保存时格式化代码,哪怕你已经装了 Prettier、Black 或 ESLint 扩展——只要 editor.formatOnSave 没设为 true,就完全不触发。这是绝大多数人“配了半天没反应”的根本原因。
- 打开设置(
Ctrl + ,或Cmd + ,),搜format on save,勾选Editor: Format On Save - 或直接编辑
settings.json,确保有这一行:"editor.formatOnSave": true - 注意:项目根目录下的
.vscode/settings.json会覆盖全局设置;如果里面写了"editor.formatOnSave": false,那整个项目都无效
每种语言都得单独指定 defaultFormatter
VSCode 不会自动把 Prettier 当成 JavaScript 的默认格式化器,也不会默认用 Black 处理 Python——它连“该用谁”都不知道,必须显式声明。
- 在设置里搜
default formatter,点开对应语言(如[javascript])的下拉菜单,选esbenp.prettier-vscode - 或在
settings.json中按语言配置,例如:{ "[python]": { "editor.defaultFormatter": "ms-python.black-formatter" }, "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } } - 如果只写全局
"editor.defaultFormatter": "esbenp.prettier-vscode",Python 文件可能报错No formatter installed for 'python'
格式化器没装对 / 没激活,右下角会显示 “None”
右下角状态栏显示的语言模式(如 JavaScript)和当前激活的格式化器(如 Prettier)必须匹配,否则保存只是“空转”。
- 确认文件类型正确:.py 文件右下角应是
Python,不是Plain Text;.ts 文件不能是TypeScript却配了 JS 的 formatter - 按
Ctrl+Shift+P运行Format Document With,看列表是否为空;为空说明扩展没装、没启用,或不支持当前语言 - Python 用户特别注意:
ms-python.python扩展本身不等于格式化器,还需安装ms-python.black-formatter或启用python.formatting.provider设置
多个格式化器共存时容易互相覆盖或卡住
同时启用 Prettier 和 ESLint 的格式化能力、或装了 js-beautify + prettier,会导致保存时反复调用、光标乱跳、甚至格式错乱——VSCode 会尝试让所有可用 formatter 都跑一遍。
- 停用非主力格式化扩展:比如确定用 Prettier,就禁用
HookyQR.beautify等干扰项 - ESLint 建议只做检查,修复交给 Prettier;若真要用 ESLint 自动修复,需额外开启
"editor.codeActionsOnSave": { "source.fixAll.eslint": true },并确保项目已安装eslint - 大项目中格式化慢?可加
"editor.formatOnSaveTimeout": 2000防止超时中断


















