关掉vscode自动格式化需同步关闭编辑器级、语言级和插件级三类开关:设editor.formatonsave为false仅是起点,还需检查javascript.format.enable、prettier.enable、eslint.format.enable等配置并设为false,并确认.vscode/settings.json未覆盖设置。

VS Code 里关掉 editor.formatOnSave 最快最稳
如果你用的是 VS Code(绝大多数人),直接改设置就行,不用装插件、不碰源码。核心就是把 editor.formatOnSave 设为 false。
常见错误现象:
- 改了图形界面设置但没生效 → 实际是工作区
.vscode/settings.json覆盖了用户设置,得去项目根目录下那个文件里也加一遍 - 关了
editor.formatOnSave,保存还是格式化 → 某个插件(比如 Prettier 或 ESLint)自己开了保存钩子,得单独关它的配置,例如:prettier.requireConfig设为false,或eslint.format.enable设为false - 只希望禁用 JS 文件的自动格式化 → 配置写成:
"[javascript]": {"editor.formatOnSave": false},注意方括号和引号不能少
Sublime Text 关闭自动格式化,本质是关插件不是关编辑器
Sublime 自身没有“保存时格式化”功能,所有这类行为都来自第三方插件,比如 JsPrettier、AutoPEP8 或已废弃的 HTML-CSS-JS Prettify。关错地方就白忙。
实操建议:
- 先确认你装了哪个格式化插件:按
Ctrl+Shift+P输入Package Control: List Packages,看列表里有没有上面几个名字 - 找到对应插件的用户配置文件(
Preferences → Package Settings → [插件名] → Settings – User),把"auto_format_on_save": true改成false - 如果用了多个插件(比如同时装了
JsPrettier和Sublime-CodeFormatter),它们的保存钩子会互相干扰,建议只留一个,其他全卸载 - 别再去改
ReindentOnSave.py或动Key Bindings—— 那是老版本 Sublime 的 hack 方式,ST4 下基本失效,还容易引发崩溃
auto_format_on_save_extensions 写错后缀,格式化就静默失效
很多插件支持按文件类型控制是否格式化,靠的是 auto_format_on_save_extensions 这个字段。它不认通配符,也不自动补全,拼错就等于没开。
典型问题:
- 写了
["js", "ts"],但文件是.tsx→ 不触发,得显式加上"tsx" - 写了
["JavaScript"]或["JS"]→ 插件不认识,必须用小写后缀,如"js" - 想对所有文件生效,别写
["*"],多数插件不支持,正确做法是留空或删掉这一行(具体看插件文档)
格式化规则冲突时,别怪编辑器,要查工具链本身
关掉自动保存格式化后,手动按 Shift+Alt+F(Win)或 Shift+Option+F(Mac)还能格式化,但你会发现缩进、引号、分号还是被强行改掉——这不是编辑器的问题,是底层工具(如 prettier 或 autopep8)的默认规则在起作用。
关键点:
-
prettier规则几乎不可调:想保留双引号?只能在某行加// prettier-ignore注释跳过 -
autopep8可传参,但 Sublime 插件不一定读取项目级.pep8文件,得在插件设置里硬写,例如:"autopep8_args": ["--max-line-length=120", "--in-place"] - 如果你团队用 ESLint + Prettier 组合,VS Code 里光关
editor.formatOnSave不够,还得关editor.codeActionsOnSave里的source.fixAll.eslint,否则保存仍会触发修复
真正麻烦的从来不是开关本身,而是不同层级的配置叠加:编辑器设置、插件配置、项目配置、本地 CLI 工具配置,四层叠在一起,漏一层就失效。











