files.exclude只在本地生效,因其是VSCode编辑器级配置,不参与Git提交、不同步至远程开发环境(如SSH/Dev Containers/Codespaces),且仅读取本地工作区或用户设置文件,他人克隆项目后需手动启用并信任工作区设置才可能生效。

files.exclude 为什么只在本地生效
因为 files.exclude 是编辑器级配置,不参与 Git 提交、不随项目同步、也不被远程开发容器或 Codespaces 自动加载。它只读取你本地机器上打开工作区时的 .vscode/settings.json 或用户设置文件,别人 clone 项目后根本看不到这个规则。
- 即使你把
.vscode/settings.json提交到 Git,对方拉下来后也得手动启用“工作区设置”(右上角显示 Workspace 标签才算生效) - 如果对方禁用了工作区设置(比如设置了
"security.workspace.trust.untrustedFiles": "open"等策略),files.exclude可能直接被忽略 - SSH 远程开发、Dev Containers、GitHub Codespaces 默认不挂载或不信任本地
.vscode目录,规则自然失效
如何确保隐藏规则不污染其他项目
必须用工作区级配置,且路径写法要精准——错一个字符,要么没效果,要么整个侧边栏变空。
- 在项目根目录下创建
.vscode/settings.json,内容只保留你要覆盖的项:{"files.exclude": {"**/dist": true, "**/build": true}} - 别复制用户设置里的整块 JSON;VSCode 不支持注释,
.vscode/settings.json里写 // 会直接报错 - 路径必须是 glob 模式,不是正则也不是绝对路径:
"dist"只匹配根目录,"**/dist"才递归生效;"./dist"或"/dist"全无效 - 含空格的目录名如
my folder,直接写"my folder": true,不加引号、不转义、不加斜杠
为什么改了 files.exclude 但 node_modules 还在侧边栏
大概率是模式写窄了,或者配置没落在正确位置。VSCode 对路径匹配非常严格,且工作区设置优先级高于用户设置,但前提是它真被加载了。
- 检查 VSCode 右上角设置面板是否显示 Workspace 标签;如果不是,说明你正在编辑用户设置,改的是全局
- 确认你打开的是文件夹(
File > Open Folder…),不是单个文件——否则.vscode/settings.json不会被识别 -
"**/node_modules": true能隐藏所有层级的node_modules,但写成"**/node_modules/**": true会失效 - 某些插件(如 GitLens、ESLint)会主动扫描被
files.exclude隐藏的路径,导致它们仍在相关视图中出现;关掉插件再验证
想临时跳过搜索但不隐藏侧边栏?别动 files.exclude
files.exclude 控制侧边栏显示,search.exclude 才管 Ctrl+Shift+F 的搜索范围。混用会导致误操作:你想让搜索更快,结果侧边栏空了。
- 只影响搜索:在设置里配
"search.exclude": {"**/node_modules": true},或直接在搜索框右上角输入框填node_modules/** - 搜索框的输入框优先级最高,比
search.exclude和files.exclude都高,适合临时排除 - 如果同时设了
files.exclude和search.exclude,前者不会自动同步给后者;必须显式写两遍
files.exclude 后无需重启 VS Code,但如果你已经打开了被隐藏路径下的文件,那些标签页仍会保留在编辑器中——它只控制资源管理器的可见性,不强制关闭已打开的文件。


















