atom正则替换需手动启用.*图标,空行匹配须显式写\n,跨行用[\s\s]代替.,捕获组引用用$1而非\1,严格遵循javascript regexp规范。

打开查找替换面板并启用正则模式
Atom 默认不开启正则表达式,必须手动激活。按 Ctrl + Shift + F(Windows/Linux)或 Cmd + Shift + F(macOS)调出全局查找替换面板;若只在当前文件操作,用 Ctrl + F 或 Cmd + F 即可。
关键一步:点击查找框左侧的 .* 图标(不是文字“Regex”,是那个图标),它会高亮表示已启用正则模式。没点它,哪怕你写了 ^$ 也不会匹配空行。
- 误点“Case sensitive”或“Whole word”图标不会影响正则,但可能干扰匹配结果
- 如果图标灰掉不可点,说明当前处于“Project find”模式(即搜索整个项目),需切换回单文件模式再点
- Atom 1.60+ 版本中,
.*图标位置固定在查找输入框左端,别和右侧的“Files to include”混淆
写空行匹配表达式要小心换行符差异
想删空行?直接写 ^\s*$ 很常见,但它在 Atom 里不一定生效——因为 Atom 的正则引擎(基于 JavaScript)默认不匹配换行符本身,^ 和 $ 只锚定行首/行尾,不包含换行符 \n 或 \r\n。
真正能删掉“空行”的写法是:^\s*\n(Unix/Linux/macOS)或 ^\s*\r?\n(兼容 Windows)。注意末尾的 \n 必须显式写出,否则替换后空行还在。
-
\s包含空格、制表符、\r、\n,所以^\s*$实际会把只有空格的“伪空行”也删掉 - 如果只想删纯空行(不含空白字符),用
^\n更准确 - 替换字段留空即可删除匹配行;若想保留一个换行,替换为
\n,避免连续空行塌缩成一个
跨行匹配要用 [\s\S] 而不是 .
Atom 的正则中,. 默认不匹配换行符,所以 a.b 匹配不了 a\nb。想跨行匹配,不能依赖 /s 标志(JavaScript 不支持 s flag),得改写模式。
正确做法是用 [\s\S] 代替 .:它明确表示“任意空白或非空白字符”,自然涵盖 \n。例如匹配从 function 到下一个 } 的整块函数体,写成 function\s+\w+\([\s\S]*?\}。
-
[\s\S]*?是非贪婪写法,避免一口气吞掉多个函数体 - Atom 不支持
(?s)这类内联标志,强行加会报错Invalid regular expression - 复杂跨行替换建议先用
Ctrl + F单文件预览匹配范围,确认无误再批量替换
替换时引用捕获组用 $1 不是 \1
Atom 使用 JavaScript 风格的捕获组引用语法:在替换框里写 $1、$2,而不是 \1、\2。写错会原样输出 \1 字符串,不是你想要的内容。
比如把 const name = "foo"; 改成 let name = "foo";,查找填 const (\w+) =,替换填 let $1 =。
-
$&表示整个匹配内容,$`是匹配前文本,$'是匹配后文本——这些在 Atom 里都可用 - 如果捕获组里有嵌套括号,
$1指最外层第一个(...),别数错层级 - 替换预览框(面板底部)会实时显示
$1展开后的效果,这是验证引用是否正确的最快方式











