####启动
vimdiff FILE_LEFT FILE_RIGHT
vim -d FILE_LEFT FILE_RIGHT
- 分割窗口命令来启动diff模式:
vim FILE_LEFT
然后在vim的ex模式(也就是”冒号”模式)下输入::vertical diffsplit FILE_RIGHT
####交换窗口位置
- Ctrl-w K(把当前窗口移到最上边)
- Ctrl-w H(把当前窗口移到最左边)
- Ctrl-w J(把当前窗口移到最下边)
- Ctrl-w L(把当前窗口移到最右边)
其中1和3两个操作会把窗口改成水平分割方式。
####光标移动
- vim会尽力保证两侧文件的对齐。在行间移动光标,可以看到左右两侧的屏幕滚动是同步的。
如果不想要这个特性,可以设置::set noscrollbind
- 跳转到下一个差异点
]c
- 反向跳转是
[c
- 命令前加上数字的话,可以跳过一个或数个差异点,从而实现跳的更远。
比如如果在位于第一个差异点的行输入2]c
,将越过下一个差异点,跳转到第三个差异点。
#####文件合并
如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令dp
(diff “put”)
如果希望把另一个文件的内容复制到当前行中,可以使用命令do
(diff “get”,之所以不用dg,是因为dg已经被另一个命令占用了)
####刷新比较结果
在修改一个或两个文件之后,vimdiff会试图自动来重新比较文件,来实时反映比较结果。
但是也会有处理失败的情况,这个时候需要手工来刷新比较结果::diffupdate
####撤销修改
和平常用vim编辑一样,直接<ESC>, u
####文件保存:
在比较和合并告一段落之后,可以用下列命令对两个文件同时进行操作。
同时退出::qa (quit all)
####保存全部文件::wa (write all)
####保存全部文件,然后退出::wqa (write, then quit all)
####如果在退出的时候不希望保存任何操作的结果::qa! (force to quit all)
####上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。
Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。
其他的相同的文本行被自动折叠。
如果希望修改缺省的上下文行数,可以这样设置:set diffopt=context:3
####临时展开被折叠的相同的文本行:zo
(folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸)
####重新折叠:zc
(folding close)