Atom正则需手动开启.图标,替换用$1而非\1,跨行匹配用[\w\W]?,项目替换后须执行Save All。

正则模式没点亮,所有\d+和.*都当字面量处理
Atom 默认关闭正则匹配,哪怕你输入function\s+\w+\(,它也只搜这个字符串本身。80% 的“替换不生效”问题卡在这一步。
必须手动点击查找面板右下角的 .* 图标(变蓝才算开启),或用快捷键:Cmd+Alt+F(macOS)、Ctrl+Alt+F(Windows/Linux)。别依赖记忆,每次打开面板都点一次确认。
注意:Match Case 或 Whole Word 勾选 ≠ 正则开启;Only in open files 勾错会导致项目级替换漏文件。
捕获组引用写成\1,结果原样输出字面量
Atom 用的是 JavaScript 正则引擎,替换字段里只能用 $1、$2…$9 引用捕获内容。\1 不报错,但会直接输出 \1 三个字符。
常见错误场景:
- 查找:
class="(\w+)",替换填class="c-\1"→ 实际变成class="c-\1" - 正确写法:替换填
class="c-$1" - 超过 9 组捕获时,
$10不支持,得拆成两轮替换
跨行匹配失败?. 默认不匹配换行符
JavaScript 正则中 . 天然跳过 \n,所以 start.*end 在多行文本里永远只匹配第一行。Atom 不支持 /s(dotall)标志,/(?s)start.*end/ 完全无效。
可行解法只有两个:
- 用
[\w\W]*?替代.*?(实测稳定,覆盖所有字符) - 避免贪婪:注释块匹配写
/\*[\w\W]*?\*/,别用/\*[\w\W]*/,后者可能回溯卡死 -
console\.log\([\w\W]*?\)能抓到跨行的完整日志调用
项目级替换后文件未保存,改动静默丢失
Replace All in Project 会修改多个文件,但 Atom 默认不自动保存——已改文件若没在标签页中打开,标题栏不显示 *,你也看不到它已被动过。
关 Atom 时弹出“是否保存全部更改”,一勾错就丢掉所有批量结果。
必须手动执行:File → Save All(快捷键 Cmd+K S / Ctrl+K S)。
真正危险的不是正则写得不够准,而是跨行没意识到 . 不吃换行、$1 写成 \1 还浑然不觉、替完以为万事大吉却忘了 Save All——这些地方一漏,改的不是代码,是调试时间。

















