notepad++的compare插件不能直接导出差异文件,仅支持高亮与跳转;需手动用书签标记差异行后复制导出,或借助fc、diff等外部命令生成标准diff格式。

Notepad++ 本身不支持直接将对比结果导出为差异文件(如 unified diff 格式),必须借助插件或外部工具实现。 ComparePlugin 插件只做高亮和跳转,不生成可保存的 diff 文本;所谓“导出差异”,实际是手动提取、重写,或换用其他方式绕过限制。
ComparePlugin 能不能直接导出差异块?
不能。插件菜单里没有 Export Diff 或类似选项,右键上下文菜单也不提供“复制差异”功能。它只在内存中比对、标记、跳转,所有差异信息都停留在 UI 层——状态栏显示行数变化,但不暴露原始 diff 内容。
- 按
Alt+D启动比对后,你看到的是颜色高亮,不是可编辑/可复制的 diff 文本 -
Plugins → Compare → Options里只有忽略空格、大小写等开关,没有导出相关配置 - 尝试全选 + 复制,只会复制当前视图的纯文本(含所有未变化行),不是差异摘要
怎么手动提取“被标记的差异行”并保存?
这是最常用、也最可控的替代方案:利用 ComparePlugin 的“标记行”能力,配合 Notepad++ 自带的书签功能,把差异块所在行批量导出。
- 确保两个文件已用相同编码(推荐
UTF-8 without BOM)打开,且均已保存 - 按
Alt+D执行比对,确认状态栏出现Lines differ: X - 按
Ctrl+F打开查找框 → 切到Mark标签页 → 勾选Bookmark line→ 点击Mark All(此时所有差异行会被打上书签) - 菜单栏选择
Search → Bookmark → Copy Bookmarked Lines→ 新建一个标签页粘贴 →Ctrl+S保存为diff_summary.txt
注意:这个方法导出的是“含差异的整行原文”,不含 +/- 符号,也不体现删/增/改语义,仅适合人工核对。
想生成标准 diff 文件(比如给 Git 看)怎么办?
得跳出 Notepad++,用命令行工具。Windows 上可用 fc(基础)、diff(Git for Windows 自带)、或 PowerShell 的 Compare-Object。
- 若已安装 Git for Windows,打开 Git Bash,执行:
diff -u "C:/path/left.txt" "C:/path/right.txt" > diff.patch - PowerShell(需先用
Get-Content转为数组):Compare-Object (Get-Content a.txt) (Get-Content b.txt) | Out-File diff.ps1,但输出格式非标准 diff - 简单二进制/文本对比可用系统命令:
fc /n a.txt b.txt > fc_result.txt,/n显示行号,但无 +/- 标记
关键点:Notepad++ 不参与这个流程;你只是用它编辑源文件,再切到终端生成真正可用的 diff。
为什么没人做“导出 diff”的插件?
不是没人想,而是技术上卡在三个地方:ComparePlugin 是 C++ 编写的旧架构插件,不暴露比对后的行级差异结构;Notepad++ API 没提供“获取当前比对结果对象”的接口;而且 diff 生成逻辑(如 context 行数、是否忽略空白)需要独立控制,硬塞进插件菜单反而增加误用风险。
所以至今仍靠组合操作:用 ComparePlugin 快速定位,用书签提取,用外部工具生成标准格式。最容易被忽略的是编码一致性——哪怕只差一个 BOM,ComparePlugin 就会静默失败,而你根本看不到任何报错。











