21

我是一个铁杆emacs用户,但到目前为止一直用于kdiff3与祖先的 3 路合并,例如在执行git mergerebase. 我真的很喜欢这种方式,kdiff3它不仅可以同时显示正在合并的所有四个版本的文本:

  • 共同祖先(缓冲区Akdiff3
  • “我们的”又名“本地”(缓冲区B in kdiff3
  • “他们的”又名“远程”(缓冲区C in kdiff3
  • 合并结果或目标

而且还通过颜色突出显示ABC之间的差异。然而,与合并缓冲区的文本编辑kdiff3相比,emacs这并不令人惊讶,因为kdiff3它不是一个成熟的文本编辑器。它也没有与优秀的magit包装一起开箱即用。所以我试图ediff在解决这个特定场景中的冲突时切换到使用(多年来我已经成功地ediff用于其他用例)。

然而,尽管阅读了ediff手册EmacsWiki 页面,并在#emacsIRC 上询问,我还是找不到同时显示所有 4 个缓冲区的方法。默认情况下它显示:

  • “我们的”又名“本地”(标记为缓冲区A
  • “他们的”又名“远程”(标记为缓冲区B
  • 合并结果或目标(标记为缓冲区C

/切换显示合并结果缓冲区 ( C ) 的窗口,使其显示祖先缓冲区,但您无法同时看到祖先和合并结果。(此外,祖先缓冲区中的差异以单一颜色突出显示,这并不能清楚地显示哪些位与其他两个可见缓冲区(AB)不同,尽管根据这个线程,不幸的是,祖先差异细化似乎没有'尚未实施。)

有没有一种简单的方法可以配置ediff为同时显示所有 4 个缓冲区?

4

2 回答 2

6

这已添加到主干版本中。现在默认情况下,3 路合并显示四个缓冲区,即“本地”(缓冲区 A)、“远程”(缓冲区 B)、合并结果(缓冲区 C)和祖先。您可以更改此默认值,自定义新选项“ediff-show-ancestor”。

键“/”现在绑定到新命令“ediff-toggle-show-ancestor”:它切换是显示 3(本地、远程和结果)还是 4(本地、远程、结果、祖先)缓冲区。

这些更改将在 Emacs 26.1 版本中可见。

于 2017-03-14T07:46:52.840 回答
1

不,没有简单的方法来配置它来做到这一点。有选项ediff-window-setup-function,您可以将其自定义为您想要的任何功能。您可以查看默认设置,ediff-setup-windows-plainediff-setup-windows-multi了解您需要做什么。事实上,最简单的方法是将其中一个复制到您的 emacs 配置中并修改它(当然要更改名称);他们不是微不足道的。

于 2013-07-31T17:26:38.653 回答