Sublime全局搜索的后缀过滤仅由Where框的glob表达式控制,如.py、src//.ts;不支持正则和大括号展开,排除用-*.min.js,多后缀用英文分号分隔。

Where框里填*.py或*.js才真正按后缀过滤
Sublime 的全局搜索(Ctrl+Shift+F)不靠文件类型按钮,也不靠右键菜单——所有后缀限制都得手动写进 Where 框。留空就是搜整个项目,填 *.py 才只查 Python 文件;填 src/**/*.ts 表示递归查 src/ 下所有 .ts 文件。
常见错误是以为勾选了“File Types”下拉菜单就能生效,其实那个菜单只是历史记录快捷入口,不参与实际过滤。真正起作用的只有 Where 框里的 glob 表达式。
-
*.py:匹配任意路径下的.py文件(含子目录) -
tests/*.py:只匹配tests/目录下一级的.py文件 -
**/*.test.js:匹配所有层级中以.test.js结尾的文件 - 多个后缀用分号连接:
*.html;*.htm(注意是英文分号,不是逗号)
Where 框不支持正则,但支持 ** 和 * 通配符
Where 框用的是 Shell 风格 glob,不是正则引擎。所以别写 .*\.py$ 或 (js|ts),这些全无效。它只认两种通配符:* 匹配单层任意字符(不含 /),** 匹配多层路径(含 /)。
比如你想搜 api/ 下所有 JS 和 TS 文件,得写成:api/**/*.js;api/**/*.ts,不能简写为 api/**/*.{js,ts} —— 大括号展开不支持。
另外,. 表示当前项目根目录,./ 是非法写法,会直接导致无结果;./src 也不对,应写 src/ 或 src/**。
排除特定后缀要用 -*.min.js 这种语法
如果项目里混着大量压缩文件或 source map,它们常含你要搜的关键词,但你并不想改它们——就得在 Where 框里显式排除。格式是减号 + 星号 + 后缀:-*.min.js、-*.map、-*.png。
多个排除规则用英文逗号分隔:., -*.min.js, -*.map, -*.log。注意逗号前后不能有空格,否则 Sublime 会把空格当路径一部分解析失败。
这个排除只影响本次搜索,不影响侧边栏显示或索引。如果想永久跳过某些类型,得改项目设置里的 file_exclude_patterns,但那是另一套逻辑,和 Where 框互不干扰。
搜 _sublime 这类带下划线的词,后缀过滤反而容易漏文件
像 _sublime 这种字符串常出现在 .sublime-settings、.sublime-project 或插件 Python 文件里。但如果你只填 *.py,就会漏掉配置文件;只填 *.sublime-settings,又漏掉源码。
稳妥做法是显式列出所有可能后缀:*.py;*.sublime-settings;*.sublime-project;*.json。如果不确定,先不加后缀限制,搜完看结果里哪些文件类型反复出现,再针对性补上。
还要检查 file_exclude_patterns 是否误删了这些后缀——比如有人手滑加了 *.sublime*,那即使你在 Where 框写了 *.sublime-settings,也搜不到。
最易被忽略的一点:Where 框的过滤发生在搜索执行前,但它不校验路径是否存在。填了 nonexistent/**/*.py 不报错,只是返回空结果。调试时建议先用 . 确认能搜到内容,再逐步收紧范围。











