【问题标题】:Can ediff merge simultaneously show the ancestor, A, B, and merge buffers?ediff merge 可以同时显示祖先、A、B 和合并缓冲区吗?
【发布时间】:2013-03-23 13:57:10
【问题描述】:

我是一个顽固的emacs 用户,但到目前为止一直使用kdiff3 与祖先进行三向合并,例如在执行git mergerebase 时。我真的很喜欢kdiff3 不仅可以同时显示正在合并的所有四个版本的文本的方式:

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

还通过颜色突出显示ABC之间的区别。然而,kdiff3 在合并缓冲区的文本编辑方面与emacs 相比毫不奇怪,因为kdiff3 不是一个成熟的文本编辑器。它也没有与优秀的magit 包集成开箱即用。因此,当解决这个特定场景中的冲突时,我尝试切换到使用ediff(多年来,我已经成功地将ediff用于其他用例) .

然而,尽管阅读了ediff manualEmacsWiki page,并在#emacs IRC 上询问,我还是找不到同时显示所有4 个缓冲区的方法。默认显示:

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

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

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

【问题讨论】:

    标签: emacs merge diff kdiff3 emacs-ediff


    【解决方案1】:

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

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

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

    【讨论】:

    • 我终于发现git config --global merge.conflictStyle diff3确保祖先版本也插入到冲突范围内,这似乎是利用此功能所必需的。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2014-12-10
      • 2015-02-01
      • 2023-03-03
      • 1970-01-01
      • 2012-07-21
      相关资源
      最近更新 更多