sublime默认不启用正则模式,\n、^、$等全失效;必须手动点击右下角.*图标(变蓝)才生效,验证方式为搜索\d+能高亮数字。

为什么直接搜 \n 没反应
不是正则写错了,是 Sublime 默认不解析转义序列。\n、^、$ 全部失效,除非手动点右下角的 .* 图标激活正则模式——变蓝才算生效。确认方式:搜 \d+ 能高亮数字,就说明正则已就位。
常见误操作是以为按 Ctrl+H 就自动进正则,结果搜 \r\n 什么也不匹配。Windows 文件里尤其明显:只输 \n 会漏掉 \r,导致替换不完整甚至内容错位。
用 R 而不是 \n 或 \r\n
R 是 Sublime 内置的跨平台换行符匹配符,等价于 \r\n|\n|\r,不用管当前文件是 CRLF 还是 LF。它解决的是“混杂换行格式”场景下的漏匹配问题。
- ✅ 删所有空行:
^\s*$R→ 替换为空(注意关闭. matches newline) - ✅ 合并多换行为单换行:
R{2,}→ 替换为R - ❌ 别在字符类里用:
[R]是非法语法;R\n会报错 - ⚠️
R不代表“写入 LF”,它只用于查找;写入时仍按当前文件的line_ending设置落盘
批量改多个已打开文件,两步缺一不可
Sublime 原生不支持“一键批量改换行符并保存”。所谓批量,必须分两步走:先统一转换格式,再统一保存。漏掉第二步,所有改动都只是内存状态,关掉再开就还原。
- 用
Ctrl+Click(Windows/Linux)或多指点击(macOS)多选标签页 - 调出命令面板:
Ctrl+Shift+P→ 输入Convert Line Endings to LF(大小写敏感)→ 回车 - 再次调出命令面板 → 输入
Save All→ 回车 - 如果目标是 CRLF,命令名是
Convert Line Endings to Windows,不是to CRLF - 文件若为只读(右下角标
RO),转换命令会静默失败,需先解除只读或提权重开
跨文件替换别硬套正则,优先交给终端
有人在 Find in Files(Ctrl+Shift+F)里搜 \r\n 替成 \n,结果部分 UTF-16 文件损坏、Git 日志乱码。这不是正则写得不对,而是编辑器对编码和换行符的底层处理有边界。
更稳的做法是:用 Find in Files 定位到所有目标路径,复制出来丢给系统工具处理:
- macOS/Linux:
dos2unix ./src/**/*.js(转 LF)或unix2dos(转 CRLF) - Windows(WSL):同上;原生 CMD 可用
forfiles+PowerShell组合 - Git 用户注意:
core.autocrlf=true会让手动改完的 LF 在下次git checkout时又被拉回 CRLF
真正难的不是“怎么替”,而是判断该不该在编辑器里替——混合编码、Git 集成、自动化流程里,编辑器正则只是临时手段,不是最终解。











