我是一个顽固的emacs
用户,但到目前为止,始终使用kdiff3
与祖先进行3向合并,例如执行git merge
或rebase
时。我非常喜欢kdiff3
不仅可以同时显示所合并文本的所有四个版本的方式:
kdiff3
中的缓冲 A )kdiff3
中的缓冲区 B )kdiff3
)但也可以通过颜色突出显示清除 A , B 和 C 之间的差异。但是,kdiff3
在合并缓冲区的文本编辑方面与emacs
相比毫不奇怪,因为kdiff3
不是一个完整的文本编辑器。它也没有开箱即用的优秀magit
包。因此,在解决此特定方案中的冲突时,我尝试切换到使用ediff
(我已成功使用ediff
其他用例多年。)
然而,尽管阅读了ediff
manual和EmacsWiki page,并询问#emacs
IRC,我仍无法找到同时显示所有4个缓冲区的方法。默认情况下显示:
按/
切换显示合并结果缓冲区( C )的窗口,使其显示祖先缓冲区,但无法同时查看祖先和合并结果。 (此外,祖先缓冲区中的差异以单一颜色突出显示,并未清楚地显示哪些位与其他两个可见缓冲区不同( A 和 B ),虽然根据this thread,似乎不幸的是祖先差异优化还没有实现。)
是否有一种简单的方法可以配置ediff
同时显示所有4个缓冲区?
答案 0 :(得分:5)
这已添加到主干版本中。现在默认情况下,3向合并显示 四个缓冲区,即“本地”(缓冲区A),“远程”(缓冲区B), 合并结果(缓冲区C)和祖先。您可以更改此默认值 自定义新选项'ediff-show-ancestor'。
键'/'现在绑定到一个新命令'ediff-toggle-show-ancestor':它 切换是否显示3(本地,远程和结果) 或4(本地,远程,结果,祖先)缓冲区。
这些更改将在Emacs 26.1发行版中显示。
答案 1 :(得分:1)
不,没有简单的方法来配置它来做到这一点。有一个选项ediff-window-setup-function
,您可以自定义它作为您想要的任何功能。您可以查看默认设置ediff-setup-windows-plain
和ediff-setup-windows-multi
,以了解您需要执行的操作。事实上,最简单的方法是将其中一个复制到emacs配置中并进行修改(当然更改名称);他们并非无足轻重。