ctrl+j可直接合并选中文本的换行符为单个空格,但需手动选中、强制空格分隔且无法自定义;正则替换须匹配正确换行符类型(\r\n或\n),推荐用\r或先查eolmode。

能直接合并,但换行符类型不对就完全没反应——不是功能失效,是匹配失败。
Ctrl+J 是最快捷的合并方式,但有隐藏限制
Notepad++ 内置 Ctrl+J 快捷键,本质是「把选中区域的所有换行符替换成单个空格」。它不依赖正则、不挑编码、也不关心当前文档用的是 \r\n 还是 \n,所以对临时整理片段最省心。
但要注意三点:
- 必须先手动选中要合并的文本范围;全选(
Ctrl+A)也行,但不能只把光标放在某处就按——它不会自动作用于全文 - 它强制插入一个空格作为分隔符,无法改成逗号、制表符或空字符串;如果需要无间隔拼接,得切到替换模式
- 若选中文本里含空行(即连续两个换行),
Ctrl+J会把空行变成「空格+空格」,视觉上像多出空格,需额外清理
正则替换必须写对换行符:\r\n 和 \n 不可互换
在「查找替换」对话框中启用「正则表达式」模式后,\r\n 匹配 Windows 风格换行,\n 匹配 Unix/Linux/macOS 风格。Notepad++ 不自动识别文档实际使用的换行符类型,也不会报错提示。
常见错误现象:
- 点了「全部替换」但文本毫无变化 → 极大概率是查错了换行符类型
- 只替换了部分换行 → 文档混用了
\r\n和\n(比如从网页复制粘贴进来的文本) - 替换了却出现
^M符号 → 原文是\r\n,但你用了\n查找,结果只删了\n,留下孤立的\r
实操建议:
- 先按
Ctrl+Shift+P打开 Python Script 控制台,运行editor.getEOLMode():返回0表示\r\n,1表示\n - 更简单:先试
\r\n,无效就换\n;还无效再查是否含\r(老 Mac 风格,极少见) - 想彻底规避类型问题?用
\R(PCRE 内置元字符,匹配任意换行符),但需确认 Notepad++ 版本 ≥ 7.9(2026 年主流版本都支持)
要保留部分换行、只合并特定段落,得靠带边界的正则
全局替换会无差别处理所有换行,而真实需求常是「只合并列表项」「跳过标题和空行」「每三行拼成一组」。这时必须用正则圈定上下文边界。
例如把以下结构:
水果: - 苹果 - 香蕉 - 橙子 <p>蔬菜:</p>
- 胡萝卜
- 菠菜
合并为:
水果:苹果, 香蕉, 橙子 蔬菜:胡萝卜, 菠菜
做法是分步处理:
- 先匹配「以 - 开头、后跟非换行字符、接着换行、且下一行仍以 - 或结尾」的模式:
(- ([^\r\n]+))\r\n(?=- |$) - 替换为:
, $2(注意空格位置) - 再单独删掉所有开头的
-:^-→ 空
关键点:
- 用
[^\r\n]+替代.*,避免跨行误吞内容 -
(?=- |$)是正向先行断言,确保只在「下一个非空行仍为列表项」或「已是末尾」时才合并,防止吃掉空行或标题 - 一步写完的正则容易漏边界,尤其当数据格式不规整时,分步更可控
- 先匹配「以 - 开头、后跟非换行字符、接着换行、且下一行仍以 - 或结尾」的模式:
最易被忽略的其实是行尾符统一问题——合并前若文档本身混用 \r\n 和 \n,哪怕正则写对了,也会出现“部分成功、部分残留”的诡异现象。建议合并前先用「视图 → 显示符号 → 显示所有字符」扫一眼,比猜快得多。











