Notepad++ 并没有直接提供“选中两行自动合并”的一键式功能。所谓“两行合并为一行”,本质上就是将换行符替换为空格、逗号或者直接删除——关键不在于你选了多少行,而在于能否准确捕获那个换行符。
Ctrl+J 快捷键仅对选中区域生效,且强制添加空格
按下 Ctrl+J 是最快捷的方式,但它并非“合并任意两行”,而是“将当前选中范围内的所有换行符替换为单个空格”。
- 你需要先用鼠标或
Shift+↑/↓选中至少两行(包括中间的换行符),光标停留在某处直接按快捷键是无效的 - 它不区分换行符是
\r\n还是\n,也不依赖正则表达式,因此在临时整理数据时最为省心 - 不过分隔符固定为空格,无法改为逗号或直接删除;如果两行本身已有空格(例如缩进后换行),结果中会出现多余空格
- 如果选中范围内包含空行(即连续
\r\n\r\n),Ctrl+J会生成两个空格,后续还需手动去重
正则替换必须写对换行符,否则完全无效
使用 Ctrl+H → 勾选「正则表达式」模式,是最灵活的方法,但失败率也最高——90% 的问题出在换行符写错。
\r\n只匹配 Windows 风格换行(CRLF),\n只匹配 Unix/Linux/macOS 风格(LF)- 从网页、终端或 Git 输出粘贴而来的文本,很可能混着
\n;而 Notepad++ 新建文件默认使用\r\n - 找不到原因?先打开「视图 → 显示符号 → 显示所有字符」,查看行尾标注的是
CRLF还是LF - 想一劳永逸?使用
\R(PCRE 元字符,匹配任意换行),但需要 Notepad++ ≥ 7.9(2026 年主流版本均已支持)
合并代码时要小心语法破坏,切勿无脑删除换行
将两行 JS 或 Python 代码合并,并非简单删除换行——缩进、冒号、花括号、分号都可能引发问题。
- 例如 Python 中
if x:和下一行print(y)合并为if x: print(y)可行,但def f():和return 1合并后缺少缩进就会报错 - JS 中
function foo() {和return bar;合并后若漏掉空格,变成function foo(){return bar;}虽然能运行,但可读性会严重下降 - 推荐做法:先用
Ctrl+J尝试合并,再人工检查语法;或者通过正则限定上下文,例如只合并case.*?:开头的行
想只合并特定两行,就得靠正则边界锚定
全局替换会清除所有换行,但实际需求往往是“只合并不相邻的两行”“跳过注释行”或“合并某段内的连续行”。
- 例如合并 switch case 中的两行:
case 1:和doA(); break;,可以用查找case \d+:\s*\r\n(\s*.*?;),替换为case $1 - 避免跨行误匹配:使用
[^\r\n]+替代.*,前者会停在换行前,后者可能吞掉整段 - 需要保留原结构?比如把
- apple和- banana合成apple, banana,得先匹配- ([^\r\n]+)再替换,不能直接动换行符

真正棘手的往往不是操作步骤,而是你需要先判断:这两行之间的换行符究竟是什么、合并后是否会影响语法、是否存在隐藏的空行或缩进。工具只是执行者,决定权始终在你手中。
