为 git、diff、grep 和 blame 输出提供语法高亮的分页器,可直接替换 git 默认分页工具。
ivankovic/omnidiff
用 Rust 编写的内容感知比对工具,基于 tree-sitter 做代码结构化比对,也能比对图片、字体、压缩包和 PDF。
- Star
- 1,168
- Fork
- 28
- 未关闭 Issue
- 9
- 最近提交
- 20小时前
这是什么?
OmniDiff 是一款命令行与终端比对工具,会根据文件类型选择比对方式。对于 25 种语言的源代码,它使用 tree-sitter 语法解析后逐结构比对,只高亮真正改动的部分,例如被重命名的表达式,而不是把整行标为删除和新增。扩展名无法识别的文件则按纯文本逐行比对。
非文本文件按内容而非文件名识别。图片逐像素比较,动画逐帧比较;字体逐字形比较,压缩包逐文件比较,PDF 逐页比较,并标注每处改动对读者而言的可见程度。其他二进制文件则只给出一行“文件有差异”的提示。
OmniDiff 可以作为交互式双栏查看器运行,也可以输出纯文本或 JSON 供脚本和 CI 使用,并可作为 git difftool、通过 GIT_EXTERNAL_DIFF 驱动的 git diff,以及 Jujutsu(jj)的比对后端。安装方式包括 Cargo、Homebrew、apt、Nix,以及 Linux、macOS、Windows 的预编译二进制。
核心功能
- 01通过 tree-sitter 语法对 25 种编程与标记语言做结构化比对。
- 02图片逐像素比较,支持动画逐帧比较。
- 03字体逐字形比较,PDF 逐页比较。
- 04压缩包逐文件比较,支持嵌套压缩包。
- 05提供交互式终端界面、纯文本输出和 JSON 输出。
- 06可接入 git difftool、git diff 和 Jujutsu(jj)。
适用场景
- 审查只改动了部分表达式的代码重构。
- 查看 git 中字体、图标集或 PDF 图表的具体改动。
- 需要机器可读比对结果的脚本或 CI 流程。
- 将默认的 git difftool 替换为语法感知的查看器。
快速上手
- 1
使用 Homebrew 安装(macOS 和 Linux)
brew install ivankovic/omnidiff/omnidiff - 2
或使用 Cargo 从源码构建(需要 C 编译器和 Rust 1.92 或更高版本)
cargo install --locked omnidiff - 3
在两个文件上打开交互式查看器
omnidiff BEFORE AFTER
使用前须知
- README 中的徽章标注为 AGPL-3.0-only 许可证(一种 Copyleft 许可证),但仓库元数据未检测到许可证。
- 从源码构建需要 C 编译器和 Rust 1.92 或更高版本,首次 cargo install 需要几分钟。
收录于专题
标签
常见问题
- omnidiff 是什么?
- 用 Rust 编写的内容感知比对工具,基于 tree-sitter 做代码结构化比对,也能比对图片、字体、压缩包和 PDF。 OmniDiff 是一款命令行与终端比对工具,会根据文件类型选择比对方式。对于 25 种语言的源代码,它使用 tree-sitter 语法解析后逐结构比对,只高亮真正改动的部分,例如被重命名的表达式,而不是把整行标为删除和新增。扩展名无法识别的文件则按纯文本逐行比对。
- omnidiff 可以免费使用吗?用的什么许可证?
- omnidiff 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- omnidiff 还在维护吗?
- 活跃维护中。omnidiff 最近一次提交是在 2026年11月6日。
- omnidiff 适合用来做什么?
- 审查只改动了部分表达式的代码重构。 查看 git 中字体、图标集或 PDF 图表的具体改动。 需要机器可读比对结果的脚本或 CI 流程。 将默认的 git difftool 替换为语法感知的查看器。
- omnidiff 怎么安装和运行?
- 使用 Homebrew 安装(macOS 和 Linux): brew install ivankovic/omnidiff/omnidiff 或使用 Cargo 从源码构建(需要 C 编译器和 Rust 1.92 或更高版本): cargo install --locked omnidiff 在两个文件上打开交互式查看器: omnidiff BEFORE AFTER
- 在哪里获取 omnidiff?
- 源代码和安装说明在 GitHub 上:https://github.com/ivankovic/omnidiff
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
在终端中以 GitHub 风格并排显示带语法高亮的 git diff。
一款基于语法结构而非逐行比较的命令行 diff 工具,重排代码时也能准确显示真实改动。
面向终端的交互式代码差异查看器,支持 Git、Jujutsu、Sapling 和 GitHub PR,并可显示 AI 代理批注。
一个命令行工具,在本地启动类 GitHub 风格的网页界面,用于查看和评审 Git 提交差异,评论可复制为 AI 提示词。
一个带语法高亮和 Git 修改标记的终端 cat 替代工具。