(问题改编自如何将emacs中的两种冲突变体组合起来?)
我有一个合并冲突标记的文件.它看起来类似于:
<<<<<<< HEAD
522ADC9C14B2FD9D00F56BAD /* close_test_button.png in Resources */,
522ADC9D14B2FD9D00F56BAD /* close_test_button@2x.png in Resources */,
522ADCA014B2FDB100F56BAD /* test_failed.png in Resources */,
522ADCA114B2FDB100F56BAD /* test_failed@2x.png in Resources */,
=======
EC1633C014B2F3E3004B52E7 /* arrow.png in Resources */,
EC1633C114B2F3E3004B52E7 /* arrow@2x.png in Resources */,
EC1633C214B2F3E3004B52E7 /* groups.png in Resources */,
EC1633C314B2F3E3004B52E7 /* groups@2x.png in Resources */,
>>>>>>> beta_2.8
Run Code Online (Sandbox Code Playgroud)
我使用Mx vc-resolve-conflicts启动Ediff.我可以通过敲击键盘上的a或b选择变体A或B,但如何将两种变体一个接一个地组合在一起?
试图在OS X Lion上使用Emacs v23.2(9.0)对hg(mercurial-1.8.4)repo进行ediff-revision工作.我在问题的第一部分找到了这个答案,但现在我从Emacs ediff-revision获得了这个答案:
Mx ediff-revision比较文件的修订版(默认.hgtags):〜/ myrepo.hg/.hgtags修订版1进行比较(默认.hgtags的最新版本):修订版2进行比较(默认.hgtags的当前状态):
我收到以下回复:
Checking out /Users/username/repo.hg/.hgtags.~tip~...
apply: Wrong number of arguments: (lambda (file &optional editable rev) "Retrieve a revision of FILE.
EDITABLE is ignored.
Run Code Online (Sandbox Code Playgroud) 我是一个顽固的emacs
用户,但到目前为止一直用于kdiff3
与祖先的三向合并,例如在表演时git merge
或rebase
.我真的很喜欢kdiff3
不仅可以同时显示正在合并的文本的所有四个版本的方式:
kdiff3
)kdiff3
)kdiff3
)但也可以通过颜色突出显示A,B和C之间的差异.然而,与合并缓冲区的文本编辑kdiff3
相比,毫不奇怪emacs
,因为kdiff3
它不是一个完整的文本编辑器.它也没有开箱即用的优秀magit
包装.所以我想切换到使用ediff
解决这一冲突时,特别是方案(我已经成功地使用ediff
于其他使用案例多年).
但是,尽管阅读了ediff
手册和EmacsWiki页面,并询问#emacs
IRC,我找不到同时显示所有4个缓冲区的方法.默认情况下显示:
按下/
切换显示合并结果缓冲区(C)的窗口,以便显示祖先缓冲区,但您无法同时看到祖先和合并结果.(此外,祖先缓冲区中的差异以单一颜色突出显示,但没有清楚地显示哪些位与其他两个可见缓冲区(A和B)不同,尽管根据此线程,似乎不幸的是祖先差异细化还没有还没有实现.)
是否有一种简单的方法来配置 …
我在Windows上有Emacs版本23,似乎ediff
缺少可执行文件?
我可以在哪里下载ediff
Windows上的Emacs?
Emacs 23.1.1在CentOs 6上的Ediff 2.81.2
在进行任何自定义之前,Ediff默认会将窗口水平分割(一个在另一个上面).
我希望它们并排,所以我尝试将以下行添加到我的.emacs中
(setq ediff-split-window-function 'split-window-vertically)
(setq ediff-merge-split-window-function 'split-window-vertically)
Run Code Online (Sandbox Code Playgroud)
这没有任何效果 - 窗户仍然水平分开.我还尝试使用Ediff的Emacs Customization界面默认进行垂直拆分 - 同样的故事.
请注意,我在与两个垂直分割的缓冲区进行比较时尝试了这一点.我也尝试过没有在缓冲区中打开的文件,并要求Ediff比较两个文件 - 相同的结果.
然后我尝试将split-window-horizontal指定为ediff-split和ediff-merge的分割窗口函数.
(setq ediff-split-window-function 'split-window-horizontally)
(setq ediff-merge-split-window-function 'split-window-horizontally)
Run Code Online (Sandbox Code Playgroud)
这导致窗口垂直分割(彼此相邻).当我注释掉这些行并使用Emacs Customization界面设置这些选项时也是如此.
是的,我已经看到了这个问题,但我不想在全球范围内消除水平分裂 - 我只是希望Ediff默认情况下这样做.
我是否会失去理智,或者有人改变了"横向"和"垂直"的含义(顺便说一下,我正在从我的O'Reilly书的副本中采用"垂直"和"横向"分裂的定义"学习Gnu Emacs")?
我在C++中有两个类似的功能,我想仔细比较.我正在使用emacs功能ediff-regions-linewise
逐行比较它们.许多行的空白区别很小,例如:
//Line from first function
somefunc(i,j);
//Line from second function
somefunc(i, j);
Run Code Online (Sandbox Code Playgroud)
Ediff模式足够聪明,可以知道哪些部分只有空格不同:命令##
名义上意味着"忽略空格".它只会导致光标跳过不同的部分,但仍然突出显示仅由空格不同的行,就像它突出显示以某种重要方式不同的行的方式相同.
有没有办法让ediff模式停止突出显示由于空格而不同的行?
我有以下函数,它对我在 dired 缓冲区中标记的文件运行 ediff:
(defun mkm/ediff-marked-pair ()
"Run ediff-files on a pair of files marked in dired buffer"
(interactive)
(let ((marked-files (dired-get-marked-files nil)))
(if (not (= (length marked-files) 2))
(message "mark exactly 2 files")
(ediff-files (nth 0 marked-files)
(nth 1 marked-files)))))
Run Code Online (Sandbox Code Playgroud)
它仅适用于同一目录中的文件,如何使其适用于我在不同目录中标记的文件?
我正在尝试使用emacs ediff作为git difftool.
我已经遵循了这里提出的一些配置: 使用ediff作为git mergetool
当谈到某个文件的不同git版本之间的比较时,我完全没有问题:ediff运行良好,两个版本之间的差异被正确描述.
但是,当我尝试运行git difftool来比较文件的当前目录版本与某个git版本时,我遇到了问题.对于某些文件,我收到以下错误:
apply: Wrong type argument: arrayp, nil
这很奇怪,因为这个错误仅适用于某些文件,而不是所有文件.
我已经尝试了几个文件,我认为经验法则如下: - 如果要比较的文件没有放在git根目录中,那么它就失败了. - 否则,ediff会显示当前版本的文件与指定的修订版本之间的差异,没有任何问题.
我尝试过上面提到的链接中解释的一些配置.所有这些都给了我相同的结果:git difftool在将非root git文件的当前目录版本与某个git版本进行比较时失败.
知道如何解决这个问题吗?
非常感谢.-Bob
我正在使用emacs ediff来比较我经常更新的两个文件.如何在不杀死和重新加载ediff的情况下刷新或更新缓冲区以反映新文件?当我尝试使用Cx Cv更新每个文件时,Ediff控制面板说"你已经杀死了一个重要的Ediff缓冲区 - 你现在必须离开Ediff!"