sublime的where输入框需用英文逗号加空格分隔条件,不支持多行、逻辑运算符、花括号通配或合并排除;路径必须完整且大小写敏感,排除目录须用-前缀加斜杠结尾,正则模式需手动开启。

Where 输入框必须写成单行字符串,不能换行或用空格分隔多个条件
Sublime 的 Where 输入框不是命令行,不支持多行、空格分隔或逻辑运算符(如 &&、||)。所有筛选条件必须拼成一个以英文逗号分隔的字符串,且每个片段之间**必须紧跟一个空格**——漏掉这个空格,整个排除就失效。
常见错误写法:./src/**/*.js -/node_modules/ -/dist/(空格缺失 → Sublime 当作一个路径名解析,直接报错或静默忽略)
-
./src/**/*.js:只搜 src 下所有 .js 文件(含子目录) -
., -/node_modules/, -/dist/:搜整个项目,但排除根级node_modules和dist -
./src/**/*.ts, ./src/**/*.tsx, -./tests/:搜两类 TS 文件,同时排除tests/目录(注意-./tests/前的逗号和空格)
文件类型和排除路径必须分开写,不支持 *.{js,ts} 这类 shell 风格语法
Sublime 不解析花括号通配,*.{js,ts} 会被当字面量搜索,根本匹配不到任何文件。多个后缀必须显式列出,用逗号+空格分隔。
- ✅ 正确:
./src/**/*.js, ./src/**/*.ts - ❌ 错误:
./src/**/*.{js,ts}、./src/**/*.{js,ts}、./src/**/*.js|ts - ⚠️ 注意:
./src/**/*.js,*.ts是非法组合 —— 后者缺少路径前缀,Sublime 会忽略或报错
排除目录必须用 - 前缀 + 斜杠结尾,且层级匹配严格
-/node_modules/ 只排除项目根目录下的 node_modules/,不会影响 packages/foo/node_modules/。想排除所有层级,得写 -*/node_modules/(* 表示任意前缀)。
-
-/node_modules/:仅根级,等价于-./node_modules/ -
-*/node_modules/:所有层级,包括src/utils/node_modules/ -
-/build/和-/dist/必须分别写,不能合并为-/build/,-/dist/(逗号后缺空格就挂) - 大小写敏感:Linux/macOS 下
-/Node_modules/不会排除node_modules/
正则模式开启与否,直接影响 Where 中的 ^ 和 $ 行为
即使你在 Where 里写了 ./src/**/*.js,如果没点右下角的 .* 图标(即没开正则),^import 这类模式依然只按「整个文件开头」匹配,无法跨行生效。
- 要让
^匹配每行开头,必须开启多行模式:点面板右下角⇧按钮,或在查找内容前加(?m) - Windows 下
$会停在\r前,导致替换后多出回车;建议统一用\R(Sublime 内置通用换行符)代替 - 中文搜索前务必确认状态栏编码是
UTF-8,否则^/$可能因字节错位完全失效
最易被忽略的一点:所有 Where 条件都是“叠加生效”,不是“优先级覆盖”。你既写了 ./src/**/*.js 又写了 -./dist/,Sublime 就真只扫 src/ 下非 dist/ 子路径的 .js 文件——但如果你忘了 ./src/ 前缀,它可能去扫整个磁盘。路径写错一个字符,结果就全偏了。











