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`可以决定那种模式是默认模式