KDiff3 1.12.5 更新:三份文件一起比,GPL 开源的跨平台合并工具

摘要

KDiff3 1.12.5 已发布:三向合并、逐字符高亮与内置冲突编辑器,GPL-2.0-or-later 许可,Windows、macOS、Linux 通吃。

推荐
软件名称
KDiff3
版本
1.12.5
收费
免费
开源
开源
操作系统
WindowsmacOSLinux
更新时间
2026-10-21 15:48

两份文件对比是日常活儿,三份文件一起比才是 KDiff3 的主场。它不是只告诉你哪里不一样,而是让你在同一个窗口里把三边改动合成一份。

版本停在 1.12.5

按 KDE 应用站给出的发布记录,KDiff3 当前版本是 1.12.5,日期为 2026 年 7 月 20 日。往前追溯,1.12.4 是 2026 年 2 月 16 日,1.12.3 是 2025 年 5 月 10 日,再往前 1.12 系列从 1.12.0 一路排下来,中间还有 1.11.x 与 1.10.x 各若干版。

这个节奏说明它是维护型项目:一年两三个点版本,没有大版本跳变,也没有功能营销。对一个从 2000 年代就在用的工具来说,这种节奏本身就是信号——它已经稳定到不需要靠新功能维持存在感。

三向合并到底解决什么问题

两路对比回答的是"这两份文件哪里不一样"。三向合并回答的是另一个问题:两个人从同一份原始文件各自改过之后,怎么把两边的改动合到一起,而且不把对方改的东西覆盖掉。

KDiff3 的官方描述是"比较并合并两个或三个文本文件或文件夹"。三份的形态是原始文件加两边各自的修改版本,工具会把三边摊开,标出哪些行只有 A 改了、哪些行只有 B 改了、哪些行两边都动了。两边都动的那些行才会被抬成冲突,交给人工判断。数字上的差别很直接:两路对比要人逐行看过去,三向合并只需要看被标记出来的那几处。

它同时支持文件与文件夹两种粒度。文件夹模式下比较的是整棵目录树,子文件的差异状态会汇总到列表里,改过的、新增的、缺的都标出来。

逐字符,不只是逐行

官方对这项能力的描述里特意加了个感叹号:shows the differences line by line and character by character(!)。逐行对比是行业标配,逐字符不是。区别在长行的场景里很明显——一行几百个字符的配置项或压缩过的代码,逐行对比只会告诉你"这行变了",逐字符会把变的那几个字符单独标出来。

这项能力在审代码改动时实际价值不小。变量名从 userName 改成 user_name,逐行视角看到的是整行高亮,逐字符视角看到的是中间那一段。

冲突在编辑器里直接解决

比对工具常见的问题是"找到了差异,但改还得换个地方改"。KDiff3 内置了一个合并编辑器,冲突行会以标记形式出现在输出区,可以在原地选择保留哪一边、或者两边都留、或者手工改写。截图里底部那块 Output 面板就是干这个的。

更实用的是窗口底部那行状态提示:剩余未解决冲突数量,括号里还会注明其中有多少是纯空白差异。写合并的时候最怕的就是改到一半忘了还剩几处,这行数字把这件事变成了可核对的进度。

KDiff3 手动合并界面截图:上半部三个文本输入窗格并列显示同一份文件的三份版本,差异行按颜色标出,每个窗格右上角标着 Encoding: UTF-8 与 Line end style: Unix,下半部是 Output 输出面板,窗口底部一行状态提示剩余未解决冲突数量

空白与注释可以被藏起来

缩进被编辑器自动改了、行尾多了一个空格、注释被格式化工具有规律地重排——这些差异在语义上没有意义,但会把真正需要看的改动淹没掉。KDiff3 提供了对空白与注释差异的高亮与隐藏选项:需要看的时候高亮,不需要的时候收起来。

这条能力在接手别人代码或者处理一次大规模格式化之后特别有用。差异数量从几百处降到十几处,剩下的才是需要判断的内容。

编码和换行的差异要单独看

官方明确写了支持 Unicode、UTF-8 以及其他文件编码。实际界面里,每个文本窗格的右上角都会显示当前识别到的编码和行尾风格——截图里能看到 Encoding: UTF-8 与 Line end style: Unix 这两项。

这两项单独列出来不是装饰。跨平台协作里最常见的一类"假差异"就是换行符:同一份文件在 Windows 上是 CRLF,在 Linux 上是 LF,逐行对比会把整份文件标成全红。把行尾风格显式摆出来,问题立刻定位到换行而不是内容。

KIO 与版本控制关键字

它通过 KIO 提供网络透明访问,也就是说远端资源按 KIO 的地址形态填进去就能直接比较,不必先把文件拉到本地再比。对经常要拿服务器上的配置和本地副本对照的人来说,这一步省掉的是下载与清理。

另一项容易被忽略的能力是版本控制关键字与历史合并支持。带 $Revision$、$Date$ 这类关键字的文件,在版本库之间对比时关键字本身会被展开成不同的值,KDiff3 能在比较时把这些展开差异处理掉,避免它们被当成真实改动。

装法不止一种

KDE 应用站给出的入口有三类:Linux 上可以通过 Discover 这类支持 AppStream 的应用商店安装,也可以走发行版自己的包管理器;跨发行版的通用做法是 Flatpak,页面上直接给了 Flathub 入口;Windows 与 macOS 有对应的安装包,页面上按 ARM 与 Intel 分别列出。

项目另外提供 nightly 安装包,走 KDE 的 CDN 分发,定位是测试用途,页面自己也标注了这是不稳定版本。想跟进开发分支的人才需要它。

许可证是 GPL-2.0-or-later,源码与缺陷跟踪都在 KDE 的 GitLab 上,手册挂在 KDE 文档站,另有官方论坛。

什么时候它最省事

日常只比两份文件的场景,任何工具都能干,用不着特意装它。真正让它显出价值的是三种情况:需要在两份修改之上做合并、需要在长行里定位到具体哪几个字符变了、以及需要在文件与文件夹两个粒度之间来回切换。

如果手边的工作流是 Git,把它配成外部合并工具也是常见用法——三向合并正是 Git 冲突解决时的天然形态,而它恰好原生就支持三个输入。

KDiff3 的价值不在功能列表有多长,而在它把"三份文件怎么合"这件事从头到尾收在了一个窗口里:看差异、判冲突、改内容、核对剩余数量,一步都不用离开。

KDiff3下载地址
支持的操作系统: Windows macOS Linux