Emacs中的文件比较与合并工具--Ediff

1 Ediff的特性
===============

 * Ediff可以同时比较2个或者3个文件/buffer的异同点
 * Ediff可以合并两个文件形成第三个文件
 * Ediff可以应用patch文件
 * Ediff已经跟版本控制系统结合在一起了,使得你可以将文件与老版本的文件进行比较
 * Ediff可以自动处理远程的和压缩过的文件


2 Ediff基础命令
================
 * ediff-files / ediff
       比较两个文件
 * ediff-backup
       比较文件与它的backup文件,如果存在多个backup文件,则使用最新的那个,如果文件本身是backup文件,则与它的原始文件比较
 * ediff-buffers
       比较两个buffer
 * ediff-files3 / ediff3
       比较三个文件
 * ediff-buffers3
       比较三个buffer
 * edirs / ediff-directories
       比较两个目录中的文件
 * edirs3 / ediff-directories3
       比较三个目录中的文件
 * edir-revisions / ediff-directory-revisions
       只比较两个目录中有版本控制的文件
 * edir-merge-revisions / ediff-merge-directory-revisions
       合并指定目录中有版本控制的文件的不同版本之间的内容
 * edir-merge-revisions-with-ancestor / ediff-merge-directory-revisions-with-ancestor
 * ediff-windows-wordwise
       比较两个窗口,一个单词一个单词的进行比较. 命令执行后,会让你用鼠标一次点击要比较的第一个和第二个窗口
 * ediff-windows-linewise
       比较两个窗口,一行一行的进行比较
 * ediff-regions-wordwise
       比较两个regions,一个单词一个单词的进行比较. 命令会提示以此输入包含region的buffer名
 * ediff-regions-linewise
       比较两个regions,一行一行的进行比较
 * ediff-revision
       比较当前buffer文件的版本差异,默认是最新版本与本地文件进行比较
 * ediff-merge-files / ediff-merge
       合并两个文件
 * ediff-merge-files-with-ancestor / ediff-merge-with-ancestor
       类似`ediff-merge`,但是以第三个文件作为原始文件
 * ediff-merge-buffers
       合并两个buffer
 * ediffer-merge-buffers-with-ancestor
       类似`ediff-merge-buffers`,但是以第三个文件作为原始文件
 * edirs-merge / ediff-merge-directories
       合并两个目录中相同的文件
 * edirs-merge-with-ancestor / ediff-merge-directories-with-ancestor
       类似`edirs-merge`,但是以第三个目录中的文件作为原始文件
 * ediff-merge-revisions
       合并当前buffer文件的两个版本
 * ediff-merge-revisions-with-ancestor
       合并当前buffer文件的两个版本,但是以第三个版本作为原始文件
 * ediff-documentation
       显示ediff的info手册
 * ediff-show-registry / eregistry
       显示Ediff Registry,在这里你可以快速查找和重新激活Ediff session

3 Session Commands
===================
 许多Ediff-mode命令都可以接一个数字类型的前缀参数,正数表示第N个差异处,负数表示倒数第N个差异处
 * ?
   是否显示Ediff快速帮助窗口
 * E
   显示Ediff的Info
 * v
   下翻比较的两个buffer(一般命名为A buffer和B buffer)
 * V
   上翻比较的两个buffer(一般命名为A buffer和B buffer)
 * <
   左移比较的两个buffer
 * >
   右移比较的两个buffer
 * wd
   将diff的结果保存到文件中
 * wa
   保存buffer A的内容
 * wb
   保存buffer B的内容
 * wc
   保存buffer C的内容
 * a
   采用buffer A处的差异内容,可能是覆盖buffer B的对应部分(在比较操作时)也可能是覆盖到合并的buffer中(在比较操作时)
 * b
   类似a,但是采用的是buffer B处的差异内容
 * ab
   从buffer A拷贝当前差异内容到buffer B,该系列命令只能用在同时比较三个文件时
 * ac / ba / bc / ca / cb
   类似ab
 * p / DEL
   移动到上一个差异处
 * n / SPC
   移动到下一个差异处
 * j / -j / Nj
   移动到第一个 / 最后一个 / 第N个差异处
 * ga
   定位到与buffer A中光标位置最近的差异处.
 * gb
   定位到与buffer B中光标位置最近的差异处
 * gc
   定位到与buffer C(比较操作时)或者合并的buffer(合并操作时)中光标位置最近的差异处
 * !
   重新比较差异
 * *
   标识出差异处具体哪几个单词是不一样的. 如果加上负数的前缀参数,则不标识出差异的单词
 * m
   让显示Ediff的当前frame,宽度最大化
 * |
   切换左右比较还是上下比较
 * @
   切换是否显示差异的单词
 * h
   切换比较的显示方式
 * r
   还原merge buffer中的原始内容,只能在合并操作时使用
 * ra
   还原buffer A中的原始内容,该命令仅在比较操作时使用
 * rb / rc
   类似ra
 * ##
   切换是否比较空格个数的不同
 * #c
   切换是否比较时大小写敏感
 * #h
   不比较符合指定正则表达式的差异
 * #f
   只比较符合指定正则表达式内容之间的差异
 * A
   切换buffer A的只读属性, 如果文件A处于版本控制系统中,则文件A被提交
 * B / C
   类似A
 * ~
   调换buffer A ,buffer B, buffer C之间的顺序
 * i
   显示当前Ediff sessiion的信息
 * D
   显示ediff-custom-diff-program比较差异的结果,如果带有前缀参数,则显示使用diff比较的差异结果
 * R
   显示Ediff Registry,这里你可以查看管理Ediff sessions
 * M
   显示包含当前Ediff session的session group
 * z
   暂停当前Ediff session
 * q
   退出当前Ediff session
 * %
   是否narrow Ediff buffers.
 * $$
   当对原始文件进行合并操作时,是否跳过能够自动合并的部分,而只显示冲突的部分. 类似版本控制系统里的自动合并功能
 * $*
 * /
   合并操作时显示原始文件内容
 * &
   更改合并操作时的默认策略,共有三种策略:`default-A`,`default-B`,`combined`
 * s
   缩小merge window到最小的大小,以便尽可能給空间給对比的buffer, 再按一次s,则恢复原大小.
   如果带一个正数的前缀参数,则表示使merge window放大N行. 负数的前缀参数,则表示使merge window缩小N行
 * +
   合并buffer A和buffer B
 * =
   人工选择要比较的区域,并创建一个子Ediff session来比较
 * eregistry / ediff-show-registry
   打开registry
 * ediff-toggle-multiframe
   切换Ediff的multi-frame模式(这种模式下Ediff的快速帮助窗口显示在另一个独立的frame中)和single-frame模式(这种模式下所有的Ediff buffer使用同一个frame). 通过设置变量`ediff-window-setup-function`可以决定那种模式是默认模式

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页