直接搜\n替换失败因文本混用\r\n和\n,Sublime正则默认不跨行,正确做法是用\r?\n统一匹配,并预处理行尾空格、伪空行和缩进结构。

为什么直接搜 \n 常常替换失败
因为粘贴进来的文本可能混用 \r\n(Windows)和 \n(macOS/Linux),只搜 \n 会漏掉一半换行符。Sublime 的正则引擎默认不跨行匹配,. 也不匹配换行符,所以不能靠模糊搜索碰运气。
正确做法是统一用 \r?\n:它能同时匹配 \n 和 \r\n,覆盖所有常见来源(网页、Excel、邮件正文)。不需要判断系统类型,也不用反复试。
- 别用
^$删除空行——它漏掉含空格或制表符的“伪空行” - 想删空行?用
^\s*$\n,\s包含空格、Tab、换行符前导空白 - 不确定换行符类型?先点菜单 File → Line Endings → Unix (LF) 统一为
\n,后续正则更可控
合并前必须清理的三个干扰项
不处理这三项,哪怕正则写对了,结果也会出错:单词粘连、CSV 解析失败、JSON 报错。
-
行尾空格/Tab:用
Ctrl+Shift+P→ 输入Trim Trailing White Space清理;或装TrailingSpaces插件,自动标红并一键清除 -
伪空行:即看起来空、实际含空格或
\t的行,用正则^\s*$\n替换为空 -
混合缩进或注释行:比如 Python 中
if x:\n print("ok")合并后变成if x: print("ok"),缩进语义丢失;这类结构必须手动选区隔离,不能全量替换
怎么用正则实现逗号分隔或无缝拼接
Ctrl+J 固定加空格,改不了;唯一可控路径是正则替换。关键不是“怎么写”,而是“在哪执行”。
- 先选中目标区域(比如只选数据列,避开表头或注释),避免误吞全文
- 按
Ctrl+H(Windows/Linux)或Cmd+H(macOS),点亮.*按钮启用正则模式 - 在
Find What输入:\r?\n - 在
Replace With填:,(逗号)、|(竖线)、,(逗号加空格)或留空(无缝拼接) - 想只替换选区?按
Alt+R开启「在选区中替换」,否则Replace All会扫完整个文件
合并后出现双空格或单词粘连怎么办
这不是正则写错了,而是原始文本里藏着看不见的干扰。最常被忽略的是:行尾空格没清、伪空行没删、缩进结构被硬吞。
例如某行末尾有空格,下一行开头是 # comment,合并后变成 value # comment —— 看似正常,但 CSV 解析器可能把 # 当字段内容而非注释;又或者 SQL 查询里 WHERE\n id = 1 变成 WHERE id = 1,多一个空格不影响执行,但 diff 工具会报差异。
真正卡住人的从来不是 \r?\n 怎么写,而是你看到的“多行”,在 Sublime 里只是带换行符的纯文本流——它不会跳过注释、不会保留缩进语义、也不会识别 CSV 列边界。所有结构意图,都得你手动界定、预处理、再替换。

















