Sublime Text 本身不支持真正的文件内容合并,所有“合并”均为人工比对后手动复制粘贴或依赖外部工具;Compare Files 插件仅提供双栏差异高亮,不识别 Git 冲突标记、不处理编码与换行符差异、无三栏视图,也无法自动决策保留哪边内容。

Sublime Text 本身不提供“合并两个文件内容”的功能,所谓“合并”只能靠人工比对后手动复制粘贴,或借助外部工具链完成——插件不能绕过这个根本限制。
Compare Files 插件只对比,不合并
安装 Compare Files 后,右键标签页 → Compare Files 才能触发双栏差异高亮(拖文件进窗口不会自动对比)。它用绿色标新增、红色标删除,但:
- 不识别
<<<<<< HEAD这类 Git 冲突标记,全当普通文本处理 - 换行符不一致(
\r\nvs\n)会导致整行被标为不同,哪怕内容一字不差 - 空格、缩进、末尾空白的微小差异也会触发高亮,干扰真实逻辑变更判断
- 没有“接受左边/右边”按钮,所有决策和操作都得你手动切窗口、复制、粘贴
MultiEditUtils 的“多文件复制”不是真合并
装好 MultiEditUtils 后,Ctrl+Shift+P → MultiEditUtils: Select All Views 可在所有打开文件顶部打光标,再 Ctrl+A + Ctrl+C 能一次性复制全部内容。但它只是按标签页打开顺序拼接文本,存在明显缺陷:
- 若某文件末尾没换行符,下个文件内容会紧贴着写过去(如
line1line2) - 不处理文件编码混杂问题:一个
UTF-8、一个GBK,复制后中文直接变乱码 - 无法跳过二进制文件或隐藏文件(如
.env),全量复制可能引入不可见控制字符 - 复制结果不含分隔标识,粘贴到新文件后无法分辨哪段来自哪个源文件
命令行合并最可靠,Sublime 只负责编辑
真正可控的合并必须脱离 Sublime Text 界面,用系统命令生成中间文件,再用 Sublime 打开清理。常用方式:
- macOS/Linux:
cat file1.txt file2.txt > merged.txt - Windows:
type file1.txt file2.txt > merged.txt - 加清晰分隔(推荐):
echo "// === file1.txt ===" > merged.txt && cat file1.txt >> merged.txt && echo "" >> merged.txt && echo "// === file2.txt ===" >> merged.txt && cat file2.txt >> merged.txt
注意:cat 和 type 不校验编码,若含非 UTF-8 文件,先用 iconv 或 Sublime 的 File → Reopen with Encoding 转码;大文件慎用,避免内存溢出。
别指望插件解决 Git 三路合并
遇到 <<<<<< HEAD 冲突块,Sublime Text 所有插件都无能为力。它不解析冲突结构,也不提供 left/center/right 三栏视图。唯一正解是:
- 配置 Git 使用
smerge:git config --global mergetool.smerge.cmd 'smerge merge "$BASE" "$LOCAL" "$REMOTE" -o "$MERGED"' - 务必加
git config --global mergetool.smerge.trustExitCode true,否则每次保存都要手动确认 -
smerge是 Sublime Merge 的命令行入口,不是 Sublime Text 插件,需单独下载安装并确保其注册进$PATH
复杂逻辑冲突里,“该留哪边”永远比“怎么合”难——差异高亮只是线索,决定权在你对代码上下文的理解,不是编辑器能代劳的。

















