基于 TauriCPP + Monaco Editor 0.56.0 的轻量级文件对比工具,灵感来自 Beyond Compare。支持双向差异同步、文件拖拽、多语言高亮,浅色主题界面。
- 双向差异对比 — 基于 Monaco DiffEditor,左右两侧实时对比文件差异
- 差异同步 — 使用 Monaco 原生右箭头(renderMarginRevertIcon)将左侧内容同步到右侧
- 差异导航 — 上一个/下一个差异点快速跳转,状态栏显示差异数量
- 文件拖拽 — 支持从资源管理器拖拽文件到左侧或右侧编辑区自动加载
- 多语言高亮 — 支持 20+ 种语言(C/C++、JavaScript、Python、Go、Rust、Java 等)
- 修改提示 — 文件修改后保存按钮高亮,退出前提示未保存修改
- 交换左右 — 一键交换左右文件位置
- 浅色主题 — VS 主题浅色背景,简洁清爽
- 单文件部署 — 前端资源嵌入 exe,无临时文件,无外部依赖
工具栏布局:版本号 | 打开左/右 | 保存左/右 | 上一个/下一个差异 | 语言选择
- Windows 10/11(需预装 WebView2 运行时)
- Visual Studio 2019+ (含 C++ 桌面开发工作负载)
- vcpkg (classic 模式)
- Python 3.7+ (用于资源打包脚本)
- CMake 3.20+ & Ninja (随 VS C++ 工作负载安装)
# 在 TauriCPP 目录下执行(安装 webview2 SDK)
.\TauriCPP\build.ps1 -SetupDeps.\build.ps1 # 构建 (Release)
.\build.ps1 -Clean # 清理并重新构建输出: build\ByCompare.exe
# 直接启动
.\run.bat
# 或通过命令行加载示例文件
.\build\ByCompare.exe sample\original.cpp sample\modified.cpp- 点击工具栏 打开左 / 打开右 按钮选择文件
- 直接拖拽文件到窗口左半部分加载为左侧,右半部分加载为右侧
- 通过命令行参数启动时自动加载:
ByCompare.exe <左文件> <右文件>
- 点击左侧编辑器边距的原生右箭头,将左侧差异同步到右侧
- 点击右侧编辑器边距的左箭头,将右侧差异同步到左侧
- 工具栏 上一个 / 下一个 按钮跳转差异点
- 修改后对应保存按钮高亮显示
- 点击 保存左 / 保存右 保存内容
- 退出时若有未保存修改,会弹出确认对话框
ByCompare/
├── CMakeLists.txt # CMake 构建配置
├── build.ps1 # PowerShell 构建脚本
├── run.bat # 启动脚本(加载示例文件)
├── version.rc # 版本信息资源 (1.0.1)
├── app_icon.rc # 应用图标资源
├── icon.ico / icon.png # 应用图标
├── src/
│ └── main.cpp # C++ 后端入口(命令注册、窗口管理)
├── frontend/
│ ├── index.html # 主界面
│ ├── css/style.css # 浅色主题样式
│ ├── js/app.js # Monaco Editor 初始化与差异同步逻辑
│ └── monaco/ # Monaco Editor 0.56.0
├── sample/
│ ├── original.cpp # 示例原始文件
│ └── modified.cpp # 示例修改文件
└── TauriCPP/ # TauriCPP 框架(子目录)
- 后端: C++17 + TauriCPP (WebView2)
- 前端: HTML/CSS/JS + Monaco Editor 0.56.0
- 构建: CMake + Ninja + MSVC
- 依赖: WebView2 SDK, nlohmann/json
v1.0.1 — 首个正式版本
- 双向差异对比与同步
- 文件拖拽加载
- 多语言语法高亮
- 浅色主题界面
- 修改状态跟踪与保存提示
MIT
如果这个工具对你有帮助,欢迎请作者喝杯咖啡 ☕
你的支持是持续维护的动力,感谢!
