sublime text全局搜索实际由where输入框控制,需手动填写., -/.git/, -/node_modules/, -*/__pycache__/等规则;folder_exclude_patterns和file_exclude_patterns仅在.sublime-project的folders内生效,且路径需相对、格式严格。

Sublime Text 的全局搜索(Ctrl+Shift+F)默认就跳过被 folder_exclude_patterns 和 file_exclude_patterns 排除的隐藏文件与文件夹——你不需要额外设置“忽略”,而是得先确认它们是否真的被排除了;如果还在搜,问题通常出在规则没写对位置或格式不对。
Where 输入框里填 ., -/node_modules/, -/.git/, -*/__pycache__/ 才算真正排除
很多人以为改了设置就一劳永逸,结果搜索仍卡在 node_modules 里。根本原因是:Find in Files 的实际路径控制权在搜索面板右下角的 Where 输入框,不是配置文件。
-
.必须写在最前,表示从当前项目根目录开始搜 - 每个排除项以
-开头、路径以/结尾:-/.git/✅,-.git❌,-/.git❌ - 想排除所有层级的同名目录,用
-*/__pycache__/,不是-**/__pycache__/(Sublime 不支持双星号) - 多个规则用英文逗号分隔,且逗号后必须跟一个空格:
., -/.git/, -/dist/✅,.,-/.git/❌
folder_exclude_patterns 只在 .sublime-project 里才影响搜索
你在 Preferences → Settings – User 里加了 "folder_exclude_patterns": [".git", ".DS_Store"]?那对 Find in Files 完全无效。这个字段只在项目配置中起作用,而且结构不能错。
- 必须有
"folders"数组,且"folder_exclude_patterns"要写在每个"folders"对象内部 - 路径是相对于
"path"字段的,不是相对于.sublime-project文件本身。比如"path": "src",要排除根级.git,就得写"../.git" - 值是纯字符串数组:
"folder_exclude_patterns": [".git", ".DS_Store", "__pycache__"]✅,".git/"或"**/.git"❌ - 改完记得关闭并重新打开搜索面板(Esc),否则缓存可能让改动不生效
隐藏文件 ≠ 搜索时自动跳过,得靠 file_exclude_patterns 显式声明
像 .env、.prettierrc 这类点开头的文件,默认不会被 folder_exclude_patterns 拦住——因为它们是文件,不是文件夹。要过滤它们,得用 file_exclude_patterns。
- 它只匹配文件名(支持
*,不支持正则),例如:"*.log"、".env"、".*" - 同样必须放在
.sublime-project的folders对象内才影响搜索;用户设置里加了也没用 -
".*"会排除所有点开头的文件,但也会误杀.gitignore(如果你需要它参与搜索,就得单独列白名单,Sublime 不支持否定规则) - 注意大小写:Linux/macOS 下
.ENV不会被".env"匹配
真正容易被忽略的是:即使你把 .git 和 .env 都加进了排除列表,如果项目里有大量二进制文件(比如 package-lock.json 被误标为 binary,或自定义的 .bundle 文件),binary_file_patterns 配置不到位,搜索仍可能卡顿或漏结果——它和排除规则是两套并行机制,缺一不可。











