Ctrl+J是最简可靠的多行合并方案,选中目标行后按此键即用空格连接,不依赖换行符类型、正则或编码,安全可控。

Ctrl+J 是最简方案,宏录制反而容易翻车
想快速把几行文本拼成一行,别急着录宏——Ctrl+J 直接生效,不挑换行符类型、不依赖正则模式、也不怕空行或编码混杂。选中目标行后按一下,就用空格连接,干净利落。
宏在这里是“杀鸡用牛刀”:它会忠实记录你是否全选、光标起始位置、甚至误点的空白行;一旦下次选区不一致(比如少选了一行),回放就错位或静默失败。而 Ctrl+J 只作用于当前选中范围,边界清晰、行为确定。
- 如果不需要空格分隔,合并后用正则
\s+→(单个空格)再替换一次,最后^ +| +$去首尾空格 - 想用逗号代替空格?
Ctrl+J后立刻执行一次→,替换即可,比录宏快且可控 - 注意:
Ctrl+J不跨标签页、不自动全选,必须手动选中——这是它的限制,也是它的安全边界
真要录宏,必须绕过“列编辑”和“查找面板状态”陷阱
很多用户录完宏回放失败,不是操作错了,而是 Notepad++ 宏机制根本没捕获关键动作:比如 Alt+鼠标拖选 的列模式、未关闭的「替换」对话框、或者中途弹出的“全部替换 0 处”确认框。
宏只记录命令序列,不理解上下文。它看见的是“点击替换按钮”,不是“此时文档里有没有匹配项”。所以录制前必须清空所有查找/替换面板,并确保每一步都用“全部替换”而非“替换”,否则回放卡在弹窗上。
- 录制前先关闭所有浮动窗口(尤其是「查找」和「替换」面板)
- 避免在宏里混入列编辑(
Alt+鼠标拖选)——宏不记录多光标行为,只会录下后续输入,但不知道该输到哪几行 - 若需处理固定格式列(如第1、3列拼接),改用正则替换:搜索
^([^ ]+) [^ ]+ ([^ ]+)$,替换为$1,$2,再把这个替换动作录进宏
宏适合结构完全一致的重复微调,不适合动态逻辑
宏的本质是“机械重放”,不是“智能判断”。它能稳定运行的前提是:每次回放时,文档结构、光标位置、选区范围、甚至行数,都和录制时一模一样。
一旦涉及条件分支(比如“跳过空行”“只合并以 - 开头的行”)、列宽不齐、或中间插入了新行,宏大概率错位或漏处理。这时候硬靠宏+正则很快失控,不如直接写一行 Python 脚本,或用 TextFX 插件辅助。
- 宏可靠场景举例:每天导出的 CSV 都是
name,age,city三列,固定取第1、3列拼成name,city - 不可靠场景举例:日志文件里有的行有 5 列,有的只有 3 列,还夹着空行和标题行
- 更稳的替代:启用
Python Script插件,写editor.rereplace(r'^([^,]+),[^,]+,([^,]+)$', r'\1,\2'),绑定快捷键,不依赖界面状态
批量处理多个文件时,宏基本失效
Notepad++ 的宏默认只对当前激活标签页生效,不会自动切换到下一个文件、也不会识别“所有已打开标签页”。所谓“在多个文件中运行宏”,实际只是反复在同一个文件上执行多次。
想真正批量处理,得换路径:用「搜索 → 在文件中查找」配合「替换在文件中」(勾选正则),或者用 NppExec 执行系统命令(如 copy /b)。宏在这里既不省事,也不可靠。
- 若坚持用宏,必须先手动把所有目标文件全部打开,并确保它们编码一致、换行符统一(看右下角状态栏)
- 插件
Combine更适合多文件合并:它能自动识别混合编码,输出时转为 UTF-8 without BOM,且不修改原始文件 - 重要提醒:无论用哪种方式,批量前务必开启「备份当前文件」(设置 → 首选项 → 备份),防止误操作覆写原始内容


















