并排 diff、提交标签:砚的 Git 阅读体验又补了一轮

并排 diff、提交标签:砚的 Git 阅读体验又补了一轮

上一轮把所有改动放进了一页,这轮继续补怎么读。

窗口够宽时,我想把修改前后的代码摆在两边;点历史提交时,我想先看内容;文件一多,又希望侧边栏能按目录收起来。这几个需求一起进了 alpha.7,交互仍然借鉴 Mayoi,再适配到砚的共享内核里。

两边摆不下,就回到单栏

并排 diff 很直观,但它有一个前提:窗口得够宽。窄栏里硬塞两份代码,每行只能看见一小截,比较起来反而费劲。

砚提供自动、始终并排和单栏三种模式。自动模式下,两边各能放下约 80 个显示格才并排;拖窄了编辑栏,就重新判断。切换入口在 diff 面包屑末尾,命令面板里也有。

这里用的是显示格。中文、Tab 和普通英文字母占的宽度不同,拿字符串长度补空格,英文例子对齐了,中文注释可能还是歪的。

实际排版时要先展开 Tab,再按显示宽度裁切、补齐,词级差异的颜色范围也要跟着换算。替换前后的行尽量对着放,旧侧红底、新侧绿底,具体改动的词再加深,语法高亮继续保留。行号采用新侧的行号语义。

做完这一圈才发现,"左右各画一份"只是表面,麻烦都在字符和屏幕位置之间。

点提交,直接打开内容

历史列表原来偏重操作:点一下提交,先选要对它做什么。我把顺序调了一下,单击先打开预览标签。

标签前面放提交说明、作者、日期、哈希和分支信息,后面接这一提交的文件改动。它沿用总览页的结构,也能用同一套键位翻阅。读到一半切出去看源码,回来还能接着读。

检出、合并、变基、重置、还原、拣选、建分支和标签等操作,放到提交行的右键菜单里;终端前端用空格打开菜单。

有个范围需要交代:有父提交时,这里和第一个父提交比较。看普通提交够直接,遇到合并提交,要记得自己看到的是相对哪一边的变化。

目录树负责找,总览页负责读

源代码管理新增树形视图,把改动文件按目录放好。只有一个子文件夹的目录链会压成一行,比如 internal/git,不用为了找到文件连点好几层。

目录也能暂存、取消暂存或丢弃,范围限于当前分组。即使同一个目录同时出现在"已暂存"和"更改"里,操作也不会跨组带上另一份内容。

这样侧边栏可以用来挑一块范围,总览页用来慢慢读。两边不用挤着承担所有事情。

几个顺手的小入口

提交完成后,状态栏会显示「撤销」。撤回提交以后,改动留在暂存区,提交说明回到输入框。想补一个文件、改一下说明时,不用重新找刚才输入的那段话。

历史列表底部也加了「显示更多提交」,每次把读取上限增加 200。前面文章里的"最近 200 条"终于不再是固定上限,不过这里做的是扩大读取范围,大仓库的历史读取性能还得另看。

还有「初始化仓库」。打开一个普通文件夹时,源代码管理总算能告诉人下一步怎么开始,而不是空在那里。

这一轮没有什么特别抢眼的新页面,但从找文件、看 diff 到翻历史,原来几处会打断阅读的地方接上了。对一个每天要用的编辑器来说,这些小改动值得单独记一篇。

下载试用

本文记录的是 alpha.7 阶段。下面补的是后续公开版本的下载入口,方便直接试用。

2026-10-19 补充:公开安装包为 v0.1.0-alpha.14 ,适用于 macOS 13+、Apple Silicon(M 系列芯片)。

安装包目前尚未经过 Apple 公证,首次打开的说明见发布页。


仓库留档

相关推荐
孔令飞2 小时前
企业智能化升级:智能体平台设计和实现
云原生·go·ai编程
vipxieliang4 小时前
Go GC 性能优化实践:从 GOGC、GOMEMLIMIT 到分配优化
后端·go
小满zs1 天前
Go语言第十八章(架构设计)
后端·go
FungLeo2 天前
成为全栈·Go 后端篇·三轮代码审阅之后:把可读性和证据做成工程规则
golang·go·ast·静态检查·成为全栈·代码审阅
我不会起名字3222 天前
Redis 从 0 到 1(二十八):Redis 抖一下,重试把它打挂了——超时/重试/熔断的 Go 封装
redis·go·超时·熔断·重试
xyzzklk2 天前
变相解决华为Mate 8锁屏后无法建立入站网络连接
linux·运维·服务器·网络·华为·go·安卓
vipxieliang3 天前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
我不会起名字3224 天前
Redis 从 0 到 1(二十七):JSON 体积是 Protobuf 的 3.7 倍?3 种序列化的 Go 基准测试
redis·go·序列化·protobuf·messagepack
我不会起名字3224 天前
Redis 从 0 到 1(二十三):一个热 key 打到 10 万 QPS——hotkey 与本地缓存的 Go 实现
redis·缓存·go·qps·hotkey
Patrick_Wilson5 天前
Go 为什么需要 defer?从函数怎么收尾说起
后端·go·编程语言