sublime的where框中*仅匹配当前层级文件名,才支持递归;正则需手动点击.启用,否则元字符无效;路径过滤依赖、、逗号分隔和减号排除,不支持shell glob。

Sublime里*不是通配符,**才是目录递归匹配
很多人在Where框里写src/*.js想匹配所有子目录下的.js文件,结果只扫了src/一级——因为*在Sublime的Where语法里只匹配**当前层级**的文件名,不进子目录。**才是真正的递归通配符。
-
src/*.js→ 只匹配src/foo.js,不匹配src/utils/bar.js -
src/**/*.js→ 匹配src/下任意深度的所有.js文件 -
**/*.test.js→ 项目根目录起全路径扫描,等价于<project>/*.test.js</project> - 路径中不能混用
**和?等shell风格通配符;Sublime只认**和*,其他如[a-z]无效
Where框里用逗号分隔、减号排除才是真·通配控制
单纯靠*或**没法精准过滤,必须配合逗号(,)和减号(-)组合使用。Sublime把Where当路径列表解析,不是正则引擎。
-
src/**/*.js,-node_modules/**→ 扫src下所有.js,但跳过node_modules及其子目录 -
*.py,*.js,-tests/**→ 匹配所有.py和.js,排除tests/目录 -
src,-src/legacy,-src/generated→ 扫src整体,但剔除两个子目录 - 逗号前后不能有空格,否则会被当成路径的一部分;
-必须紧贴路径,写成-src/legacy会失效
正则里的.和*必须开.*按钮才生效
Find框里的.和*是正则元字符,不是通配符——它们默认完全不工作。不点右下角.*图标,user.*name就真的只找字面量“user.*name”字符串。
- 开了
.*后:console\.log\([^)]*\)能匹配console.log("x")和console.log(42) - 没开
.*:同样的表达式连console.log()都搜不到,因为.和*被当普通字符处理 -
\.和\*在正则模式下是转义写法,表示字面量点和星号;不开正则模式时反而是多余的 - 常见误操作:写了
user_.*却忘了点.*按钮,结果啥也没匹配到,还以为正则写错了
别信?和[0-9],Sublime的Where不支持shell glob
你在终端里习惯的src/??.js或src/[a-z].js,在Sublime的Where框里直接报错或静默忽略——它根本不解析这些模式。它的通配逻辑极简,只认*和**两级。
-
src/???.js→ 不匹配任何文件,也不会报错,只是查无结果 -
src/[0-9].js→ 同样无效;想匹配数字命名的文件,只能用正则+.*模式,在Find框里写\d+\.js再限定Where为src/ - 真正需要复杂路径过滤时,优先用
-排除已知干扰目录,比硬凑通配符更可靠 - 如果
Where填了非法模式,Sublime不会提示,只会返回空结果——务必先点Find看底部是否列出文件











