要只搜特定后缀,where输入框需填路径前缀(如src/或./),file mask填.ts, .tsx(逗号分隔);where不识别*.js等后缀过滤,误填会静默失败。

Where输入框填什么才能只搜特定后缀?
Sublime的全局搜索不靠文件类型过滤器,而是靠Where输入框里的路径+glob表达式。它不识别*.ts这种写法,但支持src/**/*.ts——注意双星号**只在路径中有效,不能用于后缀通配。
常见错误是把*.js直接塞进Where,结果搜不到任何内容。因为Where字段只解析路径前缀和排除规则,后缀过滤必须配合Find框里的File Mask(小齿轮图标旁的输入框)。
-
Where填src/:递归搜src/下所有文件(不管后缀) -
File Mask填*.js, *.jsx:仅对Where范围内的文件做后缀筛选 - 两者组合才真正实现「只搜src下的JS类文件」
- 多个后缀用英文逗号分隔,不支持
*.(js|ts)或正则语法
为什么填*.js在Where里没反应?
因为Where不是文件掩码字段,它是路径定位器。填*.js会被当作一个叫*.js的子目录名去查找,自然找不到。系统不会报错,只是静默跳过。
你看到搜索面板底部出现No files found,大概率是Where路径写错,而不是后缀没生效。
- 确认已通过
File → Open Folder…加载项目根目录(左下角有路径显示) -
Where必须以.或具体路径开头,比如./src、src/、., -/node_modules/ -
File Mask才是控制后缀的地方,且大小写敏感(*.JS不匹配.js) - 如果
File Mask填了但还是全量扫描,检查binary_file_patterns是否误把.js加进去了
如何排除node_modules又只搜.ts?
这是最常踩的组合坑:排除路径和限定后缀要分两处设置,且顺序无关,但缺一不可。否则要么搜到node_modules里的.ts,要么漏掉src/外的.ts文件。
-
Where填:., -/node_modules/, -/dist/, -/build/(逗号后必须空格) -
File Mask填:*.ts, *.tsx - 勾选
Regular Expression时,File Mask仍按glob处理,不走正则 - 如果项目里有
packages/foo/src/index.ts,-/node_modules/不会影响它;要排除所有node_modules需用-*/node_modules/
搜.env或.log文件总失败?
这类文件常被file_exclude_patterns默认拦截,即使你没改设置,Sublime自带的用户配置可能已包含"*.log"或"*.env"。
- 临时解决:打开
Preferences → Settings,搜索file_exclude_patterns,注释或删掉相关项 - 更稳妥:在
File Mask里明确写*.env,并确保Where路径覆盖目标位置(如./) - 验证是否真被过滤:在
Where填open_files,再打开一个.env文件,看能否搜到——能说明是file_exclude_patterns问题 - 别依赖
folder_exclude_patterns来控制后缀,它只管目录是否进索引,跟内容搜索无关
File Mask和Where的分工边界:前者筛文件名,后者定目录树。填反了就等于在错误的抽屉里找钥匙。











