彻底禁用 vs code 全局自动格式化需关闭 editor.formatonsave 和 editor.formatontype 两个设置;若插件(如 prettier、eslint)仍触发格式化,须在插件设置中单独禁用或通过状态栏配置默认格式器为 none。

禁用 VS Code 全局自动格式化
VS Code 默认在保存时(editor.formatOnSave)或键入时(editor.formatOnType)触发格式化,想彻底关掉,得从设置里关掉这两个开关。
打开设置(Ctrl+, 或 Cmd+,),搜索 formatOnSave,把勾去掉;同样搜 formatOnType,也关掉。这样所有文件类型都不会自动格式化了。
- 改的是用户级设置(
settings.json里对应"editor.formatOnSave": false) - 如果只希望某类文件不格式化,比如 TypeScript,可以加语言专属配置:
"[typescript]": { "editor.formatOnSave": false } - 注意:某些插件(如 Prettier、ESLint)会自己注册保存钩子,即使 VS Code 的
formatOnSave关了,它们仍可能格式化——得去插件设置里单独关
关掉某个项目里的自动格式化
项目级覆盖比全局更常见,尤其当团队用不同代码风格或没配好 formatter 时,保存就报错或乱改代码。
在项目根目录建 .vscode/settings.json,写入:
{
"editor.formatOnSave": false,
"editor.formatOnType": false
}
这个文件不会被 Git 提交(建议加进 .gitignore),但能确保你和同事在该项目里行为一致。
- 优先级高于用户设置,但低于工作区设置(如果你开了多根工作区,得检查每个文件夹下的
.vscode/settings.json) - 如果项目用了
prettier.config.js但没装 Prettier 插件,VS Code 可能静默忽略格式化请求,看起来像“关了”,其实是根本没触发——得看右下角状态栏的格式器标识
为什么关了还格式化?查格式器来源
关掉所有开关后仍被格式化,大概率是某个扩展在“越权”干活。右下角状态栏点格式器名称(比如 Prettier、ESLint、None),会弹出当前生效的格式器和可选列表。
- 点
Configure Default Formatter可设成None,但这只影响手动触发(Shift+Alt+F),不影响保存钩子 - 真正要查的是谁注册了保存事件:打开命令面板(
Ctrl+Shift+P),运行Developer: Toggle Developer Tools,切到 Console,保存一个文件,看有没有类似Extension 'esbenp.prettier-vscode' contributed a keybinding的日志 - 常见“隐形格式器”:Volar(Vue)、Rust Analyzer、Black(Python)、Jest Runner(有时附带格式逻辑)
禁用格式化但保留其他保存行为
有人只想停格式化,但还要保留 files.trimTrailingWhitespace 或 files.insertFinalNewline 这类轻量清理。这些和格式化无关,可以单独留着。
-
editor.formatOnSave控制调用 formatter,files.*类设置控制文件基础修整,互不干扰 - 误关
files.autoSave会导致不保存就失焦——这不是格式化问题,别顺手一起关 - 如果用 WSL 或远程开发,确认设置同步到了远程环境:右下角远程按钮旁点齿轮图标,选
Open Remote Settings,再检查一遍
false。










