vscode不支持按文件夹排除格式化,排除逻辑由各格式化工具独立控制;.prettierignore需置于工作区根目录并手动配置prettier.ignorepath,插件版本≥10.0.0且需重启窗口;eslint通过.eslintignore文件级忽略和rules配置规则级忽略;clang-format支持// clang-format off/on行级控制及.disableformat全局关闭;多工具共存时仅editor.defaultformatter指定的工具生效,其余ignore规则不触发。

VSCode 本身不提供“按文件夹排除格式化”的能力,所有排除逻辑都由具体格式化工具(Prettier、ESLint、clang-format 等)各自控制。 你改 files.exclude 或 search.exclude,对保存时格式化完全没用。
为什么 .prettierignore 不生效?
常见现象:文件明明写在 .prettierignore 里,保存时还是被格式化了。
-
.prettierignore必须放在**工作区根目录**(即 VSCode 打开的文件夹最顶层),不是子项目里,也不是用户主目录 - VSCode 的 Prettier 插件(
esbenp.prettier-vscode)默认不自动读取它,得手动指定路径:在设置里搜prettier.ignorePath,设为字符串.prettierignore - 插件版本必须 ≥ 10.0.0;老版本会静默忽略该配置
- 改完后必须重启整个 VSCode 窗口(不是重载窗口),否则不加载新 ignore 规则
- 检查状态栏右下角是否显示
Prettier—— 如果显示的是TypeScript或ESLint,说明当前文件根本没走 Prettier 流程
ESLint 格式化时怎么跳过某些文件?
当启用 eslint.codeAction.onSave.mode 为 "format",或设置了 eslint.format.enable: true,ESLint 就会参与格式化。它的排除分两层:
- 第一层是文件级忽略:靠
.eslintignore,语法和.gitignore一致,例如:dist/、**/*.config.js - 第二层是规则级忽略:在
rules里关掉特定规则,比如"prettier/prettier": "off",避免和 Prettier 冲突 - 注意:
.eslintignore只影响 ESLint 自己的 lint 和 format 行为,不影响 Prettier;两者 ignore 文件互不感知 - 如果同时启用了 ESLint 和 Prettier 的 auto-format,容易互相覆盖 —— 建议只留一个作为
editor.defaultFormatter,另一个仅做 lint 检查
clang-format 怎么忽略特定文件或代码块?
clang-format 的排除更底层,支持文件级和行级两种方式:
- 全局忽略:在
.clang-format中加DisableFormat: true,但这是全关,不推荐 - 精准忽略文件:建一个
.clang-format-ignore文件(无官方标准名,需配合插件或脚本识别),里面写路径如build/、**/generated/*.cpp - 临时跳过代码段:在源码中插入注释:
// clang-format off和// clang-format on,中间内容完全不格式化 - 注意:VSCode 的 C/C++ 插件默认不读
.clang-format-ignore,得靠自定义脚本或构建系统集成才生效;更可靠的方式是用BasedOnStyle+IncludeCategories控制作用域
真正容易被忽略的一点:多个格式化工具共存时,VSCode 只会把文件交给 editor.defaultFormatter 指定的那个处理,其余工具的 ignore 规则压根不会被触发。别以为写了 .prettierignore 和 .eslintignore 就万事大吉 —— 先确认此刻是谁在格式化。











