<p>必须先点击 .* 按钮启用正则,否则元字符无效;跨文件替换须用 Ctrl+Shift+F 并正确填写 Where 路径;边界匹配慎用 \b,推荐 (?<!\w)user_name(?!\w);替换后务必 Save All,否则更改丢失。</p>

必须先点 .* 按钮,否则正则全当普通字符串处理
你在查找框里写 console\.log\([^)]*\) 却一条都搜不到?八成是没点右下角那个 .* 图标。Sublime 的正则开关是「按文件面板独立生效」的:Ctrl+H、Ctrl+Shift+F、Ctrl+F 三个面板的 .* 状态互不影响。不点它,\d、^、$、甚至点号 . 都不会被识别为元字符——user.name 就真的只匹配字面量 user.name,而不是 userXname 或 user1name。
跨文件替换得用 Ctrl+Shift+F,Where 填 . 或 src,-node_modules
Ctrl+H 只改当前文件可见区域,哪怕你打开了 50 个标签页,点了 Replace All 也只动当前这一个。真要批量改整个项目,必须用 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)调出 Find in Files 面板。
关键在 Where 框:
- 填
.表示搜索已加载项目的全部子目录(前提是已用File → Open Folder…加载了根目录) - 填
src,-node_modules表示只扫src目录,但排除node_modules(逗号分隔,减号排除) - 别留空或填
./——它可能触发全盘扫描,极慢且危险
匹配边界容易翻车:\b 不认下划线,用 (?
想把 user_name 替成 userName,但不想碰 username 或 __user_name?别信 \buser_name\b。\b 在 Sublime 中把下划线 _ 和数字当单词字符,\buser_name\b 实际会错误匹配到 username。
更可靠写法:
(?:前后都不是字母数字(注意 Sublime 不支持 <code>(?<!这种简写,必须写全)- 如果上下文干净(比如全是 JS 变量声明),加空格前缀
user_name+ 勾选Whole Word也能避开多数歧义,但得人工扫一眼结果列表
替换完不 Save All,所有改动直接丢进虚空
点完 Replace All,所有目标文件标签页出现星号 * 是正常现象——Sublime 只把变更缓存在内存里,根本没写入磁盘。关掉窗口、崩溃、甚至只是切出去喝口水再回来,改动就彻底没了,没有撤销历史可回溯。
必须手动执行:
File → Save All- 或快捷键:
Ctrl+K然后Ctrl+B(Windows/Linux) - macOS 是
Cmd+K→Cmd+B
大文件(>10MB)、非 UTF-8 编码(右下角显示 GBK/ISO-8859-1)、只读文件(右下角标 RO)都会被跳过,这些状态得挨个看一眼。

















