最省心的方案是ctrl+j,但必须先选中目标行;正则替换更灵活却需确认换行符类型并用pcre元字符\r或锚定上下文来精准处理语义结构。

最省心的方案是 Ctrl+J,但必须先选中目标行;正则替换更灵活,但换行符写错就完全没反应。
Ctrl+J 是最快方式,但只对选中内容生效
它不是“光标一放就合并”,而是严格作用于你手动选中的文本块——哪怕只差一个字符没选中,那部分就不会被处理。
- 必须用鼠标拖选、
Shift+↑/↓或Ctrl+A全选,光标停在某行按Ctrl+J无效 - 结果固定用单个空格连接,不能改成逗号或删掉;如果原行末尾已有空格(比如缩进后换行),会变成两个空格
- 遇到空行(即连续
\r\n\r\n)会生成两个空格,后续得用\s{2,}→再清理一次 - 不依赖换行符类型,
\r\n、\n甚至混用都照常工作,适合临时整理代码片段或日志
正则替换要先确认换行符类型
Notepad++ 不自动识别文档用的是 \r\n 还是 \n,填错了就“点了全部替换却毫无变化”——这不是 bug,是匹配失败。
- 打开
视图 → 显示符号 → 显示所有字符,看行尾显示CRLF还是LF - 或者按
Ctrl+Shift+P输入editor.getEOLMode():返回0是\r\n,1是\n - 查找框填
\r\n(Windows)或\n(Unix/Linux/macOS),替换为,、或留空 - 若文本混用换行符,可用
\R(PCRE 元字符,匹配任意换行),但需 Notepad++ ≥ 7.9 版本
需要保留结构时,得用带边界的正则
全局替换会把所有换行都干掉,但真实场景常要“只合并列表项”“跳过标题和空行”。这时得靠上下文锚定。
- 例如把以
-开头的列表项合并成逗号分隔:(- [^\r\n]+)\r\n(?=- |$),替换为$1, - 想合并每三行为一组,可用
^([^\r\n]+)\r\n([^\r\n]+)\r\n([^\r\n]+)\r\n,替换为$1 $2 $3\r\n - 注意
^和$在正则中默认不匹配行首/行尾,需勾选「匹配新行」选项才生效
真正容易被忽略的是:换行符类型不统一时,Ctrl+J 能绕过去,正则却必须对症下药;而一旦涉及语义结构(比如只合并某些段落),就必须放弃无脑替换,转而写带条件的正则——这时候花两分钟分析文本模式,比反复试错快得多。











