Ctrl+D(Windows/Linux)或Cmd+D(macOS)仅在选中两个文件后生效,用于文件级对比;单文件下触发“Compare with…”流程,不支持代码片段对比,临时比对应使用“Compare with Clipboard”或Alt+Shift+C调用Local History。

直接按 Ctrl+D(Windows/Linux)或 Cmd+D(macOS)就能对比两段代码,但必须先选中两个文件;单文件状态下它不会对比“代码片段”,而是触发“与另一文件比较”流程。
选中两个文件再按 Ctrl+D 才生效
这个快捷键不是“对比光标处代码”,而是 IDE 层级的文件对比操作。常见误操作是:只打开一个文件、写了几行测试代码,然后狂按 Ctrl+D——结果弹出的是“选择另一个文件”的对话框,而不是你想要的“当前编辑器 vs 剪贴板”或“当前选中代码块 vs 历史版本”。
- 正确姿势:在
Project工具窗口(Alt+1)里按住Ctrl,点选两个.go文件,再按Ctrl+D - 如果只选中一个文件,
Ctrl+D会进入“Compare with…”流程,需手动找目标文件,不适用于临时代码片段比对 - 想比对“刚复制的一段逻辑”和当前编辑器内容?右键编辑器任意位置 → 选
Compare with Clipboard,这才是片段级对比的正路
Alt+Shift+C 是真正对标“最近改了哪几行”的快捷键
它不依赖 Git,靠的是 Goland 自带的 Local History,适合还没 git add 甚至没保存的修改。但很多人用了发现“对比窗口空空如也”,问题基本出在这三点:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
-
Settings → Editor → Local History → Keep days被设成0或太小(默认是5),旧快照被自动清理 - 项目根目录下
.idea/localHistory被手动删过,或磁盘空间不足导致历史记录失效 - 光标没停在目标文件里就按了
Alt+Shift+C——这个快捷键必须在编辑器内激活,且作用域是当前打开的文件
临时代码片段对比,别硬套文件级快捷键
如果你只是想确认自己刚写的 json.Unmarshal 调用和隔壁文件里那个是不是逻辑一致,Ctrl+D 和 Alt+Shift+C 都不贴切。这时候该用:
-
Ctrl+C复制一段代码 → 右键编辑器 →Compare with Clipboard - 或者更准一点:
Ctrl+Shift+F全局搜json.Unmarshal,勾选下方Scope → Recent Changes,把范围锁在“最近 24 小时修改过的文件”,避免扫全项目 - 注意:
Recent Changes的时间锚点是本地编辑时间,不是 Git commit 时间;选Since Last Commit时,它指的是你git commit的那一刻,不是git push
真正容易被忽略的是:Local History 和 Git 的差异视图走的是两套机制。前者能看见未保存的修改,后者只认已暂存或已提交的内容。调错环境时,先看 Alt+Shift+C 能不能拉出对比窗口,比翻 git diff 更快定位“我到底动了哪几行”。

















