我是一个顽固的emacs
用户,但到目前为止一直使用kdiff3
与祖先进行3-way合并,例如在执行git merge
或rebase
时。我真的很喜欢kdiff3
不仅可以同时显示合并文本的所有四个版本的方式:
- 共同祖先(缓冲区A
kdiff3
) - 又称为"我们的"。"local" (buffer B in
kdiff3
) - 又称为"他们"。"remote" (buffer C in
kdiff3
) - 合并结果或目标
还使A、B和C之间的区别通过高亮显示出来。然而,当涉及到合并缓冲区的文本编辑时,kdiff3
毫无疑问比emacs
糟糕,因为kdiff3
不是一个成熟的文本编辑器。它也不能与优秀的magit
包集成在一起。因此,在解决这个特定场景中的冲突时,我试图切换到使用ediff
(我已经成功地使用ediff
用于其他用例多年)。
然而,尽管阅读ediff
手册和EmacsWiki页面,并在#emacs
IRC上询问,我找不到同时显示所有4个缓冲区的方法。默认情况下显示:
- 又称为"我们的"。"local"(标有buffer A)
- 又称为"他们"。"remote"(标有缓冲区B)
- 合并结果或目标(标记缓冲区C)
按下/
切换显示合并结果缓冲区的窗口(C),以便显示祖先缓冲区,但您不能同时看到祖先和合并结果。(此外,祖先缓冲区中的diff以单一颜色突出显示,不清楚显示哪些位与其他两个可见缓冲区( a 和B)不同,尽管根据这个线程,似乎不幸的是祖先diff细化尚未实现。)
是否有一种简单的方法来配置ediff
同时显示所有4个缓冲区?
已添加到trunk版本。现在默认显示3-way合并四个缓冲区,即"本地"(缓冲区A)、"远程"(缓冲区B)合并结果(缓冲区C)和祖先。您可以更改此默认值自定义新选项'ediff-show-ancestor'。
键'/'现在绑定到一个新命令'ediff-toggle-show-ancestor': it切换是否显示3(本地、远程和结果)或者4个(本地、远程、结果、祖先)缓冲区。
这些更改将在Emacs 26.1版本中可见。
不,没有简单的方法来配置它来做到这一点。有一个选项ediff-window-setup-function
,您可以将其自定义为您想要的任何函数。您可以查看默认值ediff-setup-windows-plain
和ediff-setup-windows-multi
,以了解您需要做什么。事实上,最简单的方法是将其中一个复制到emacs配置中并修改它(当然,更改名称);