Sublime Text 不支持真正的文本差异合并,所有“合并”均为人工比对与手动编辑;它无三栏视图、不识别 Git 冲突标记、不解析语义,仅能通过 Compare Files 插件双栏显示增删行,且对空格、换行符敏感,无法替代专业 mergetool。

Sublime Text 本身不支持真正的文本差异合并,所谓“合并”只是人工比对 + 手动编辑,没有三栏视图、无冲突标记识别、不理解 Git 冲突块(如 ),更不会自动解析语义。所有标榜“合并”的操作,本质是查看差异后靠你肉眼决策。
Compare Files 插件能看差异,但不能帮你做合并决策
它只提供左右双栏并排显示,用颜色标出增删行(green 是新增,red 是删除),但不会告诉你哪边逻辑更正确、是否引入副作用、函数签名是否兼容。
- 安装后必须显式触发:右键标签页 →
Compare Files,拖两个文件进窗口不会自动对比 - 空格、缩进、换行符(
\r\nvs\n)不一致会导致整行被标为不同,哪怕内容完全一样 - 遇到 Git 冲突标记(
、=======、>>>> refs/heads/main)直接当普通文本处理,不加高亮也不提示 - 如果两文件结构差异大(比如一个按模块分组、一个按时间追加),对比结果基本不可读,不如重开终端跑
git diff --no-index
diff 命令输出补丁 + Sublime 查看,适合确认“改了什么”
diff -u 输出的是标准补丁格式,Sublime 能语法高亮,但它不是可编辑的合并界面,只是个带上下文的变更日志。
- 忽略空格变化:用
diff -uw file1.js file2.js,避免被格式调整干扰核心逻辑 - 跨平台换行安全:Git 仓库内优先用
git diff --no-index file1.txt file2.txt,自动处理CRLF/LF混用 - 补丁里
+行是你新增的,-行是对方删的,但没告诉你该保留哪边——这步仍需人工判断 - 别在 Sublime 里对着补丁文件直接修改:它不是源文件映射,改了也没法一键应用
真要合并?必须切到外部工具,Sublime 不是 mergetool
一旦涉及多处冲突、函数重排、条件分支调整,手动复制粘贴效率断崖下跌,且极易漏改或错粘。
- 用
git mergetool配vimdiff、meld或code --wait(VS Code),它们有明确的 left/center/right 三栏,支持点击接受某一边 - 临时小文件可用在线工具如
textcompare.org,但敏感代码绝不能上传——它不加密、不留日志承诺也难验证 - 别用 Sublime 的
Find in Files或正则替换模拟合并:嵌套引号、模板字符串、缩进敏感结构(如 Python)极易被破坏 -
SublimeMerge(官方出品)是唯一接近“合并工具”的选择,但它是个独立应用,不是插件,需单独下载安装
最常被忽略的难点:不是“怎么合”,而是“该留哪边”
差异看得再清楚,也无法替代对业务逻辑、调用链、副作用范围的理解。比如一行 user.email = sanitize(input) 被替成 user.email = input.strip(),补丁里只显示函数名变化,但你得知道 sanitize() 是否还校验域名格式、是否防 XSS——这个判断没法自动化,Sublime 更不会提醒。











