vscode 中需配置 "**/._*": true 才能隐藏 macos 在 u 盘等位置生成的 ._* 备份文件,因 files.exclude 依赖 minimatch 规则,**/ 匹配任意层级,._* 精准匹配点下划线开头项,且须置于工作区 settings.json 中生效。

files.exclude 必须写对 glob 才能隐藏 ._ 开头的备份文件夹
VSCode 默认不会隐藏 macOS 在 U 盘或网络共享中生成的 ._* 文件(如 ._.DS_Store),它们会挤占资源管理器空间。关键不是“能不能”,而是路径模式必须符合 minimatch 规则:写成 ._* 或 .DS_Store 都无效,前者只匹配根目录,后者不带通配符根本不会触发过滤。
正确写法是:"**/._*": true——**/ 表示任意层级前缀,._* 匹配所有以点下划线开头的文件或文件夹。
-
"**/._*"✅ 覆盖 U 盘、子目录、嵌套项目中的所有._文件 -
"._*"❌ 只匹配工作区根目录下的._项,深层路径完全失效 -
"**/.DS_Store"✅ 可单独加,但不能替代._*,两者语义不同 - 不用转义空格或特殊字符,
"**/My Backup Folder"直接写即可
为什么改了 settings.json 还能看到 ._ 文件?检查配置作用域
最常见的情况是:你在用户级 settings.json 里加了 files.exclude,但当前打开的是一个已有 .vscode/settings.json 的项目——这时工作区配置会完全覆盖用户设置,你改的那条规则根本没生效。
验证方法:按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(Mac),运行 Preferences: Open Workspace Settings (JSON),确认是否已存在 files.exclude 字段。有则直接在里面补上 "**/._*": true;没有就新建完整对象:
{
"files.exclude": {
"**/._*": true,
"**/.DS_Store": true
}
}
保存后无需重启 VSCode,但已展开的父目录可能需要手动折叠再展开一次,或按 Ctrl+R 刷新窗口。
隐藏后仍出现在搜索或 SCM 面板?这是预期行为,不是 bug
files.exclude 只控制资源管理器(左侧文件树)和 Ctrl+P 快速打开的可见性,它不干预其他功能:
-
Ctrl+Shift+F全局搜索仍会命中._文件,除非你同步配置search.exclude - 源代码管理(SCM)面板里的
._文件修改状态照常显示,Git 状态与files.exclude无关 - 终端、调试器、Python 解释器完全不受影响,
._文件仍可被读取或执行 - 某些插件(如 GitLens、Remote-SSH)可能绕过该设置主动加载文件,导致其视图中仍可见
避免误杀:别用太宽泛的 glob 模式
有人为图省事写 "**/.*": true,本意是隐藏所有点开头的文件,结果连 .git、.vscode、.prettierrc 全部消失——这不是隐藏,是自断手脚。
真正需要的只是系统备份类文件,所以应严格限定前缀:
-
"**/._*"✅ 精准匹配 macOS 生成的资源派生文件 -
"**/.Trashes"✅ 配合使用,隐藏外置磁盘的回收站 -
"**/ehthumbs.db"✅ Windows 缩略图缓存(U 盘混用场景) - 避免
"**/.*"、"**/*.*"、"**"这类无差别模式,它们会导致资源管理器变空
复杂点在于:这些文件通常不在 Git 仓库内,也不该被 .gitignore 管理,所以 files.exclude 是唯一干净的 UI 层解决方案——但它只管“眼睛看到什么”,不管“系统知道什么”。











