VSCode“保存时格式化”需依次配置:开启Editor: Format On Save开关、为语言绑定默认格式化器(如Prettier)、设置formatOnSaveExclude排除文件、协同ESLint时用eslint-config-prettier统一规则。

VSCode 的“保存时格式化”不是开个开关就完事的,它背后涉及编辑器设置、语言专属配置、格式化工具链协同,甚至项目级覆盖规则。真正用好,得一层层理清逻辑。
核心开关:先确保基础能力开启
“保存时格式化”默认是关闭的,必须手动启用。这不是全局开关,而是按工作区或用户级别生效:
- 打开设置(Ctrl+, 或 Cmd+,),搜索 format on save
- 勾选 Editor: Format On Save
- 如需仅对当前项目生效,点击右下角齿轮图标 → Workspace Settings,再勾选
注意:仅开启此项,不代表代码真能被格式化——它只是触发动作,具体执行靠后面配置的格式化器。
格式化器绑定:告诉 VSCode “谁来干活”
VSCode 不自带格式化逻辑,它依赖你安装的扩展(如 Prettier、ESLint、Black、Pylint)并指定默认格式化器。关键步骤如下:
- 安装对应语言的格式化扩展(例如:Prettier for JavaScript/TypeScript,Black Formatter for Python)
- 在设置中搜索 default formatter,找到 Editor: Default Formatter
- 点击下拉菜单,为特定语言选择格式化器(如:JavaScript → esbenp.prettier-vscode)
- 也可在项目根目录创建 .vscode/settings.json 显式声明:
"editor.defaultFormatter": "esbenp.prettier-vscode"
"[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }
没有正确绑定格式化器,“保存时格式化”会静默失败,不报错也不生效。
ShopWind网店系统是国内最专业的网店程序之一,采用ASP语言设计开发,速度快、性能好、安全性高。ShopWind网店购物系统提供性化的后台管理界面,标准的网上商店管理模式和强大的网店软件后台管理功能。ShopWind网店系统提供了灵活强大的模板机制,内置多套免费精美模板,同时可在后台任意更换,让您即刻快速建立不同的网店外观。同时您可以对网模板自定义设计,建立个性化网店形象。ShopWind网
细粒度控制:跳过某些文件或场景
不是所有文件都该被格式化。比如生成的代码、大型 JSON、或团队约定跳过的目录,可通过以下方式排除:
- 在 settings.json 中使用 editor.formatOnSaveExclude:
"editor.formatOnSaveExclude": ["**/node_modules/**", "**/dist/**", "**/*.min.js"] - 临时禁用单次保存格式化:保存前按住 Alt(Windows/Linux)或 Option(macOS),再按 Ctrl+S
- 完全禁用某语言:在语言专属设置中设 "editor.formatOnSave": false(如对 Markdown 关闭)
进阶协同:和 ESLint / Prettier 配合不打架
当同时启用 ESLint 和 Prettier,容易出现冲突(比如 ESLint 要分号,Prettier 不要)。推荐做法是让 Prettier 做格式化,ESLint 只做代码质量检查,并统一规则:
- 安装 ESLint 和 Prettier 扩展
- 在项目中安装 eslint-config-prettier(禁用 ESLint 中与 Prettier 冲突的规则)
- 配置 .eslintrc.js:
extends: ['eslint:recommended', 'prettier'] - VSCode 设置中,将 ESLint 设为默认格式化器("editor.defaultFormatter": "dbaeumer.vscode-eslint"),并开启 "eslint.format.enable": true —— 这样 ESLint 会调用 Prettier 做实际格式化,实现“一套规则,一次执行”
本质上,VSCode 的“保存时格式化”是调度器,而真正的格式逻辑、规则优先级、错误容忍度,都在你配的工具链里。
基本上就这些。不复杂但容易忽略细节:开关开了 ≠ 有活干,格式化器绑了 ≠ 规则对了,项目级配置比用户级更可靠。动手前,先看清自己用的是谁、管的是哪块、想放过的又是哪些。









