问题标签 [emacs-ediff]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
emacs - ediff merge 可以同时显示祖先、A、B 和合并缓冲区吗?
我是一个铁杆emacs
用户,但到目前为止一直用于kdiff3
与祖先的 3 路合并,例如在执行git merge
或rebase
. 我真的很喜欢这种方式,kdiff3
它不仅可以同时显示正在合并的所有四个版本的文本:
- 共同祖先(缓冲区A中
kdiff3
) - “我们的”又名“本地”(缓冲区B in
kdiff3
) - “他们的”又名“远程”(缓冲区C in
kdiff3
) - 合并结果或目标
而且还通过颜色突出显示A、B和C之间的差异。然而,与合并缓冲区的文本编辑kdiff3
相比,emacs
这并不令人惊讶,因为kdiff3
它不是一个成熟的文本编辑器。它也没有与优秀的magit
包装一起开箱即用。所以我试图ediff
在解决这个特定场景中的冲突时切换到使用(多年来我已经成功地ediff
用于其他用例)。
然而,尽管阅读了ediff
手册和EmacsWiki 页面,并在#emacs
IRC 上询问,我还是找不到同时显示所有 4 个缓冲区的方法。默认情况下它显示:
- “我们的”又名“本地”(标记为缓冲区A)
- “他们的”又名“远程”(标记为缓冲区B)
- 合并结果或目标(标记为缓冲区C)
按/
切换显示合并结果缓冲区 ( C ) 的窗口,使其显示祖先缓冲区,但您无法同时看到祖先和合并结果。(此外,祖先缓冲区中的差异以单一颜色突出显示,这并不能清楚地显示哪些位与其他两个可见缓冲区(A和B)不同,尽管根据这个线程,不幸的是,祖先差异细化似乎没有'尚未实施。)
有没有一种简单的方法可以配置ediff
为同时显示所有 4 个缓冲区?
emacs - 如何将文件 B 中的空白差异合并到文件 A?
我想将文件 B 中的空白差异合并到文件 A,但不合并非空白差异,因为我想浏览它们并一一检查?这可能吗?
emacs - emacs ediff 刷新缓冲区
我正在使用 emacs ediff 来比较我经常更新的两个文件。如何在不杀死和重新加载 ediff 的情况下刷新或更新缓冲区以反映新文件?当我尝试使用 Cx Cv 更新每个文件时,Ediff 控制面板显示“你已经杀死了一个重要的 Ediff 缓冲区——你现在必须离开 Ediff!”
emacs - Emacs ediff 在不同的 dired 缓冲区中标记了文件
我有以下函数在我在 dired 缓冲区中标记的文件上运行 ediff:
它仅适用于同一目录中的文件,我怎样才能使其适用于我在不同目录中标记的文件?
git - Ediff 作为 git difftool
我正在尝试使用 emacs ediff 作为 git difftool。
我遵循了这里提出的一些配置: Using ediff as git mergetool
在比较某个文件的不同 git 修订版之间时,我完全没有问题:ediff 运行良好,并且两个版本之间的差异被正确描述。
但是,当我尝试运行 git difftool 以将文件的当前目录版本与某个 git 修订版进行比较时,我遇到了问题。对于某些文件,我收到以下错误:
apply: Wrong type argument: arrayp, nil
这很奇怪,因为此错误仅针对某些文件,而不是所有文件。
我对几个文件进行了实验,我认为经验法则如下: - 如果要比较的文件没有放在git根目录下,那么它会失败。- 否则,ediff 显示文件的当前版本与指定修订之间的差异,没有任何问题。
我已经尝试过上面提到的链接中解释的一些配置。所有这些都给了我相同的结果: git difftool 在将非根 git 文件的当前目录版本与某个 git 修订版进行比较时失败。
知道如何解决这个问题吗?
非常感谢。-鲍勃
emacs - 如何为ediff交互式设置变量
我正在使用 ediff 模式,我想水平分割窗口而不是垂直默认值。ediff 手册说这可以交互完成。
ediff-拆分窗口函数
控制您希望窗口在文件 A 和文件 B(和文件 C,如果适用)之间拆分的方式。它默认为垂直拆分(split-window-vertically,但如果您愿意,您可以将其设置为 split-window-horizontally。Ediff 还允许您从垂直拆分切换到水平拆分并以交互方式返回。
请注意,如果 Ediff 检测到它比较的所有缓冲区都显示在单独的帧中,它会假定用户希望它们如此显示并停止拆分窗口。相反,它安排每个缓冲区显示在单独的框架中。您可以通过隐藏其中一个缓冲区 A/B/C 来切换到单帧模式。
您还可以通过键入来交换显示缓冲区的窗口 ~
我尝试使用 Mx set-variable 将此变量设置为 split-window-horiztonally,但这并没有改变布局。我想以交互方式执行此操作,我知道我可以在 .emacs 中将其设置为默认值,但在此阶段我不想这样做。
emacs - 是否可以默认启用 ediff 功能?
我经常使用 ediff-directories 来区分包含许多 c/c++ 文件的目录。每当我输入文件时,我总是使用“##”来忽略差异中的空白。
当我有很多文件要比较时,这会成为一个问题。有没有办法自动忽略空白?
emacs - Emacs的ediff模式是否支持同步点?
多年来,我一直在使用 Emacs 的 ediff 模式,我刚刚意识到,每当我需要同步点 (*) 来理解差异时,我都会退回到 Meld 或 KDiff3。
ediff中没有对同步点的支持吗?或者是否有支持此功能的 Emacs 的替代差异模式?
(*) 同步点允许您在选定位置手动对齐差异的两侧。然后独立计算两侧的第一和第二部分的差异。