where输入框必须填路径,不能留空;安全写法为“.”或“src/”等显式路径,排除目录须用“-*/node_modules/”格式,正则匹配需加\b边界符并启用.*按钮。

Where输入框必须填路径,不能留空
留空Where等于让Sublime自己猜范围,它可能扫整个磁盘或当前工作区所有根目录,极容易误触node_modules、dist、.git甚至系统临时目录。这不是慢的问题,是结果不可信。
安全写法只有两种:
-
.(单个英文点):明确限定为当前项目根目录,但依然受folder_exclude_patterns影响 -
src/、packages/**/src/:显式指定子目录,Sublime 4+ 原生支持**通配符,无需开启正则
别用./——部分版本会解析为当前终端路径;也别用./src——斜杠不统一易触发意外匹配。
排除目录必须带前导斜杠和尾部斜杠
写-node_modules完全无效;-node_modules/只排除根目录下同名文件夹;真正要跳过所有层级的node_modules,得写-*/node_modules/。
关键细节:
-
-/node_modules/→ 排除项目根下的node_modules/ -
-*/node_modules/→ 排除任意深度的node_modules/(如packages/foo/node_modules/) -
-*.min.js→ 排除所有.min.js文件,不是文件夹 - 多个规则用英文逗号+空格分隔:
., -*/node_modules/, -dist/, -*.log
大小写敏感:Linux/macOS下-Node_modules/不会生效;Windows虽不敏感,但统一小写更稳妥。
正则匹配必须加\b边界符,否则纯文本引擎会乱撞
Sublime不做语法分析,user_id会匹配到api_user_id、"user_id"、// user_id is legacy——全中招。靠\b才是唯一靠谱的单词边界控制。
实操要点:
- 启用正则(点击搜索面板右上角
.*按钮),模式写\buser_id\b - 变量含特殊字符要转义:
\$data\b(PHP)、api\$\b(JS里api$结尾) - 下划线默认是word separator,
api_v2双击只选中api;想整词匹配就用\bapi_v2\b - 大小写混用(如
UserId和user_id)?务必勾选Match Case,否则漏改
替换前必须点Find All并逐条看右侧预览
点Replace All in Files前跳过这步,等于把代码逻辑判断权交给正则引擎——而它根本不懂import { user_id }是导入名还是调用,也分不清"user_id": "123"是数据字段还是硬编码键名。
右侧边栏预览是你最后一次人工干预机会,重点检查:
- 匹配是否在字符串内(如
"user_id")?该加(?排除引号包裹 - 是否在注释里(
// user_id deprecated)?缩小Where范围更高效,比如只搜src/api/ - 是否在类型声明里(
user_id: string)?TS项目需确认是否要同步改interface - 一次预览超50条?别硬顶,先限定
Where为src/utils/**/*.ts,验证后再扩
替换后务必用原字符串反向搜索验证——user_id可能还藏在package.json的scripts字段、HTML注释、甚至某个插件模板里。没闭环,就是白干。











