必须在 find in files 的 where 输入框填 ., -/.git/ 才能排除 .git 目录;folder_exclude_patterns 仅在 .sublime-project 中生效,且值为 ".git" 等无斜杠字符串;exclude folders 栏按文件夹名模糊匹配,与 where 互不影响。

Find in Files 的 Where 输入框必须填 ., -/.git/ 才生效
全局搜索仍扫 .git 目录,不是 Sublime 抽风,是你没在 Where 输入框里写对格式。留空、只写 <project></project> 或 ./ 都不行——必须显式以 . 开头,再加排除项。
正确写法:., -/.git/(注意:逗号后有空格,末尾斜杠不能少)
-
.表示当前项目根目录,必须放在最前 -
-/.git/中的-是排除标识,/是路径分隔符,.git/必须以/结尾,否则只匹配名字前缀(比如会误伤my_git_backup) - 想同时排除其他目录,用英文逗号 + 空格分隔:
., -/.git/, -/node_modules/, -/dist/ -
-/.git/只排除根级.git;若项目是子模块嵌套,需用-*/.git/匹配所有层级
folder_exclude_patterns 在 .sublime-project 里才控制索引和搜索
你改了用户设置(Preferences → Settings – User)里的 folder_exclude_patterns,但搜索还是进 .git?因为那个配置对 Find in Files 完全无效。它只影响侧边栏显示、Ctrl+P 跳转和符号查找。
真正起效的位置是项目配置文件:Project → Edit Project,然后填入合法 JSON:
{
"folders": [
{
"path": ".",
"folder_exclude_patterns": [".git", "node_modules", "dist"]
}
]
}
-
folder_exclude_patterns值是纯字符串数组,不带斜杠:".git"✅,".git/"❌ - 这个设置会让
.git不被索引,从而避免Ctrl+P和Find in Files扫描它——但前提是项目已重载(关掉再打开或重启 Sublime) - 别在用户设置里硬塞
folder_exclude_patterns,否则所有项目都跳过.git,某天你想查 Git hooks 脚本就搜不到
Exclude folders 栏不等于 Where,别混用
搜索面板右下角那个带竖线 | 的 Exclude folders 栏,看着像能过滤 .git,但它逻辑完全不同:
- 它只按**文件夹名**模糊匹配,不看路径层级:
.git|dist会跳过src/.git和packages/foo/.git,但也会误杀my_git_tools - 大小写敏感:Linux/macOS 下
.Git不会被.git匹配 - 不支持通配符或斜杠,
/.git或*.git都无效 - 它和
Where输入框是两套机制,同时填了也不会叠加生效——Where优先级更高
binary_file_patterns 可能让 .git 里的文本也漏掉
即使你排除了 .git 目录,搜索仍可能返回空结果或卡住——问题常藏在 binary_file_patterns 里。
Sublime 默认把 .git 下很多文件(如 objects/ 里的二进制 blob)当二进制处理,跳过扫描。但如果你在用户设置里清空了它:"binary_file_patterns": [],又没配合 folder_exclude_patterns 或 Where 排除 .git,搜索就会卡死或爆内存。
- 稳妥做法:保留默认
binary_file_patterns,再靠Where或.sublime-project显式排除.git - 如果真要搜
.git/config这类纯文本文件,临时删掉Where里的-/.git/,而不是动binary_file_patterns - 别信“清空 binary_file_patterns 就能搜全”的说法——它会让 Sublime 尝试读取所有二进制文件头,反而拖慢搜索且无实际收益
.git,就得在每次搜索时确认 Where 输入框写了 ., -/.git/;或者让项目配置文件里的 folder_exclude_patterns 生效——这两处任何一处漏掉,.git 就还在搜索路径里。没有“设一次就永远不管”的捷径。











