Sublime Text原生不支持Git版本控制视图,需组合插件实现修改状态对比:GitGutter仅显示行级图标(+/~/-)及悬停字符变更,不提供完整文件diff;AYGIT仅列出文件级状态(M/A/D/??),无代码内容;真正并排对比须用Diffy或FileDiffs——二者均做纯文本行级比对,不理解Git,但可控性强。

Sublime Text 本身不提供 Git 版本控制视图,所谓“直观清晰的修改状态对比”,必须靠插件组合实现——单靠 GitGutter 不够,只装 AYGIT 也不行,得明确各自边界。
GitGutter 显示的是行级 Git 差异,不是文件对比
它只在 gutter 区域画图标:+(绿色)、~(黄色)、-(红色),对应新增、修改、删除行。这些标记实时反映当前文件与 HEAD 的差异,但不展示两份文件之间的文本 diff。
- 悬停弹窗里看到的是字符级变更,带语法高亮,但仅限单行或小范围上下文,不是完整文件对比
- 执行
GitGutter: Compare with HEAD命令后打开的新标签页,本质是把 diff 输出渲染成只读视图,不能编辑、不能跳转到原始文件对应行 - 如果文件没在 Git 仓库根目录下打开(比如只打开了单个
.py文件而非整个项目文件夹),git命令会失败,图标全灭 - 它不识别暂存区(staged)和工作区(unstaged)的区别,默认只比对工作区 vs
HEAD
AYGIT 提供的是文件级 Git 状态列表,不是代码内联高亮
AYGIT 插件运行 AYGIT: Show Status 后,在侧边栏下方弹出一个面板,列出所有变更文件,并用颜色/前缀标识状态:M(已修改)、A(已新增)、D(已删除)、??(未跟踪)。
- 这个列表是静态快照,不会随你保存文件自动刷新;需手动再执行一次命令才更新
- 它不显示任何代码内容,也不标出行号,无法定位到某一行改了什么
- 若项目含子模块(submodule)或忽略规则复杂(如
.gitignore多层嵌套),部分文件可能漏显或误显 - 它依赖系统
git命令输出,Windows 用户若 PATH 里混了多个 git(Git for Windows + WSL2 + Scoop),容易因路径冲突导致命令卡住无响应
想真正并排看两个版本的代码差异,得用 Diffy 或 FileDiffs
这两个插件才是干“对比”活的:Diffy 支持磁盘路径输入,FileDiffs 更轻量、侧重已打开标签页。它们都做纯文本行级比对,不理解 Git,但胜在可控。
-
Diffy: Compare Files要求两个文件都已保存,且路径必须是绝对路径;Windows 下含空格路径必须用英文双引号包裹,例如:"C:\proj\main.go""D:\backup\main.go" -
FileDiffs: Compare with Next Tab快捷键是Ctrl+Alt+D,但前提是两个文件已在不同分组(Group)中打开;如果只是左右拖拽标签页却没真正切分组,会提示“no next tab” - 两者都不支持忽略空白符(
-b)或大小写(-i),如果要对比前后格式化过的 JSON 或 YAML,建议先用Ctrl+Shift+P→JSON: Sort Keys统一结构再比 - 对比结果里出现大量红/绿块但实际语义没变?大概率是 BOM、换行符(
\r\nvs\n)或缩进空格数不一致——这不是插件问题,是文件本身差异
别指望“实时”或“自动刷新”,这是 Sublime 的硬限制
Sublime 的 API 不允许插件监听文件系统事件或 hook 保存动作后自动触发 diff。所有对比都是手动快照:点一下,读一次文件,算一次 diff,完事。
- 改了一行代码,
GitGutter图标会变,但Diffy视图不会自动更新;必须手动重执行对比命令 - 外部程序(如
git checkout)修改了当前打开的文件,Sublime 默认不重载——除非你关掉hot_exit并设remember_open_files: true,否则 Ctrl+R 才能强制重读 - 如果你真需要保存即刷新的 diff 视图,或者想对比
HEADvsorigin/main这种远端分支,直接切终端敲git difftool或换 VS Code 更省事


















