Emacs/EDIFF

来自站长百科
跳转至: 导航、​ 搜索

emacs | Emacs使用 | Emacs插件

'粗体文字'EdiffEmacs集成的比较与合并(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使用手册导航

Emacs安装

Emacs安装

Emacs使用

Emacs快捷键 | Windows下设置Emacs的HOME目录 | 自定义Emacs工具栏 | 在Emacs下用C、C++编程 | Emacs中的TeX排版系统 | 智能的启动Emacs

Emacs插件

EDIFF | Eshell | Color-theme | Tabbar | ECB | VisEmacs | Ange-FTP

Emacs其他

Emac定制 | 国际化以及版权