Emacs/EDIFF
'粗体文字'Ediff是Emacs集成的比较与合并(merge)文本文件内容的工具。有了它,你可以方便地比较两个(或三个)不同文件、文件夹。
软件概况[ ]
授权协议:免费软件
运行环境:Emacs
官方网站:http://www.dirfile.com/freeware/ediff.htm
软件下载:官方下载
简介[ ]
Ediff是Emacs提供的一种实时浏览文件间不同(diff)的工具,它可以比较两个或三个文件间的不同,分别表示为 file-A, file-B 或 file-C, 也可以比较两个或三个emacs-buffer间的不同。Ediff的另一个强有力特性则是可以把正的比较的文件合并成第三个文件。 另外, Ediff还可以对目录进行操作。
Ediff浏览文件的差异是在Emacs的两个Buffer上进行,分别使用不同的颜色表示所存在的差异,而且Ediff对差异区域的差异进行了“细化”,diff程序只进行到“行”级别比较,而Ediff则是基于diff程序的输出上,对差异区域进行更细致的比较,从而得到区域内“单词”级别上的差异比较。从而使比较文件间的细致不同更加容易。
Ediff的更强功能:Ediff可以“忽略”某些细微的差别,例如有两个程序几乎相同,但是其中都些变量的命名却不一样,如bar变量在另一个程序中却都foo,这对程序而言是“相同”,如果用一般的diff程序来查看该两程序的差别,则这种没有意义的变量名不同将充满了整个差异输出,从而不易找到真正的“程序不同”,而使用Ediff则可以忽略这类不同,很容易就定位我们真正想要的差异。
Ediff的特点是它与编辑器(即Emacs本身)集成在一起,所以在比较的过程可以方便的编辑被比较的文件。例如语法高亮仍然有效。它还提供了对版本控制工具的支持,例如用ediff-revision命令可以方便的比较不同版本之间的区别。
Ediff命令[ ]
- 比较两文件: ‘M-x ediff-files’‘M-x ediff’(以后略去M-x)
- 比较两个Buffer: ‘ediff-buffers’
- 比较三个文件: ediff-file3 ediff3
- 比较三个Buffer: ediff-buffer3
- 交互式使用一个patch: ediff-patch-file epatch
以上是一些主要的命令,这些命令在运行时可能会提示输入一些参数,如文件名等,同时都能很智能地提供一些合适的默认值。
Ediff命令被执行后,进行所谓的‘Ediff Session’它接受一些Ediff命令以决定Ediff的行为。具体的表现是Ediff另外建立一个窗口(称为“Quick Help window”),当聚焦在该窗口输入则被认为是Ediff命令,否则仍是一般的Emacs编辑行为,即还可以实时的编辑你正在比较的文件或Buffer。
在“Quick Help window”上输入“?”使该窗口变大或是缩小,输入q并确认则完成比较退出Ediff Session。
常用的Session Command:
移动命令[ ]
- v ( V )
把文件-A,文件-B,文件-C(如果有),同步向下(向上)滚动,
- < ( > )
把文件-A,文件-B,文件-C(如果有),同步向左(向右)滚动,
- j
跳到差异区域,可以先加数值参数,如 ‘3j’则跳到第三个差异区域,‘j’则 跳到第一个差异区域, 则‘-2j’跳到倒数第二个差异区域。跳到某区域后,再输入的编辑命令就是针对该区域执行,即有一个“当前区域”的概念,而‘j’命令则就是用于使用绝对参数设置当前活动区域。
- n (或 SPC 空格)
跳到下一个差异区域,并设其为当前区域,
- p (或 DEL)
跳到前一个差异区域,并设其为当前区域,
- ga ( gb gc )
根据光标在Buffer-A(或Buffer-B, Buffer-C)中的位置,设置一个离它们最近的差异区域为当前活动区域
编辑命令[ ]
- a
比较模式: 把Buffer-A的内容复制到Buffer-B,可以使用‘rb’恢复Buffer-B的内容,
合并模式: 把Buffer-A的内容复制到合并Buffer. 可以使用‘r’恢复旧内容,
- b
比较模式: 把Buffer-B的内容复制到Buffer-A,可以使用‘ra’恢复Buffer-A的内容,
合并模式: 把Buffer-B的内容复制到合并Buffer. 可以使用‘r’恢复旧内容,
- ra ( rb rc )
分别用于恢复 Buffer-A Buffer-B Buffer-C 差异区域中的被修改的内容。
三方比较的编辑命令[ ]
- ab
把Buffer-A的内容复制到Buffer-B,可以使用‘rb’恢复Buffer-B的内容,
- ac
把Buffer-A的内容复制到Buffer-C,可以使用‘rc’恢复Buffer-C的内容,
- ba
- bc
- ca
- cb
分别把Buffer-B(C)的内容复制到相应的Buffer-ABC,同时仍可以使用‘ra(bc)'恢复相应的被修改的内容。
Buffer属性设置命令[ ]
- A ( B C )
改变Buffer-A, buffer-B, buffer-C的只读属性,是Toggle命令。
参考来源[ ]
Emacs使用手册导航 | ||||||||
---|---|---|---|---|---|---|---|---|
|