R是Sublime中唯一能跨平台匹配所有换行符(\r\n|\n|\r)的写法,因其内置通配符机制,配合快捷键插入真实换行符并分步处理空行与格式统一,才能安全可靠地批量替换。

直接用 R 查找,别碰 \r\n 或 \n ——这是跨平台批量替换换行符唯一靠谱的写法。
为什么 R 是唯一能跨平台匹配换行符的写法
Sublime 的 R 不是正则标准语法,而是它自己内置的跨平台换行符通配符,等价于 \r\n|\n|\r。你搜 \n,在 Windows 文件里会漏掉 \r\n 中的 \r;搜 \r\n,在 macOS/Linux 文件里又完全不匹配。只有 R 能一次覆盖所有情况。
必须确保右下角 .* 图标已激活(变蓝),否则 R 当普通字符处理,啥也搜不到。
-
R只能在查找框里用,不能放进字符类,比如[R]会报错 -
R不区分大小写,但必须大写——r就是字母 r,不是换行符 - 验证是否生效:搜
^R$,应高亮所有空行(含仅含空格的)
替换框里输 \n 是错的,得用快捷键插真实换行
替换框不解析转义序列。\n 在那里就是两个字符:\ 和 n,不是换行符。你输进去,JSON、JS 字符串里就会冒出字面的 \n,直接语法报错。
正确做法:
- Windows/Linux:按
Ctrl+Shift+Enter - macOS:按
Control+Command+Enter - 想插两个换行?连按两次快捷键,不是输
\n\n
注意:最终插入的是什么换行符(\r\n 还是 \n),取决于当前文件右下角显示的 line_ending 设置,不是你“想插什么就插什么”。
删空行 + 统一换行格式,必须分两步走
试图用一条正则同时删空行并改换行格式(比如搜 ^\s*$R 替成 \n)极易失控:要么吞掉缩进,要么把 if (x) { 后面的换行也干掉。
安全流程:
- 先删空行:查
^\s*$R→ 替为空 → 确保未勾选↩(即. matches newline) - 再统一换行:查
R→ 替为快捷键插入的换行符(此时所有换行都变成当前文件设定的格式) - 最后清理末尾多余换行:查
R$→ 替为空(防止 Git 报 “no newline at end of file” 或 “trailing whitespace”)
别跳过 R$ 这步——批量替换后,最后一行末尾大概率多一个换行,肉眼难察觉,但 CI/CD 工具会立刻报错。
全局替换(Find in Files)时,R 不能用,得换思路
Find in Files(Ctrl+Shift+F)不支持 R。强行在其中搜 \r\n 替 \n,会在混合换行格式的文件里漏匹配、错替换,甚至损坏 UTF-16 文件的字节对齐。
真正可行的方案:
- 先用
Find in Files搜^$或^\s*$定位到所有含空行的文件路径 - 手动打开这些文件,用上面说的
R+ 快捷键流程逐个处理 - 或者,放弃 Sublime,扔给终端命令:比如 Linux/macOS 下跑
dos2unix ./src/**/*.js,Windows 上用unix2dos
最常被忽略的一点:右下角显示的 CRLF 或 LF 只影响视图和保存行为,不自动同步到磁盘——改完必须按 Ctrl+S,否则全是内存里的假动作。

















