vimdiff¶
参考 技巧:Vimdiff 使用。
启动
vimdiff file1 file2
vim -d file1 file2
vim file1 在命令行模式下输入 ":vertical diffsplit file2"
窗口布局切换
- C-w K(把当前窗口移到最上边)
- C-w H(把当前窗口移到最左边)
- C-w J(把当前窗口移到最下边)
- C-w L(把当前窗口移到最右边)
其中 1 和 3 两个操作会把窗口改成水平分割方式。
窗口焦点切换,即切换当前窗口
- C-w h 跳转到左边的窗口
- C-w j 跳转到下面的窗口
- C-w k 跳转到上面的窗口
- C-w l 跳转到右边的窗口
- C-w t 跳转到最顶上的窗口
- C-w b 跳转到最底下的窗口
- C-w w 跳转到另一个窗口
- C-w C-w 跳转到另一个窗口,同 C-w w
光标移动
移动光标,左右两边窗口会同步移动,使用 ":set noscrollbind" 命令可取消同步。
在各个差异点之间快速移动,"]c" 跳到下一个差异点,反向跳转是 "[c"。
文件合并
把一个差异点中当前文件的内容复制到另一个文件里,使用命令 "dp",即 diff "put"。
把另一个文件的内容复制到当前行中,可以使用命令 "do",即 diff "get"(因为 dg 已经被另一个命令占用了)。
修改一个或两个文件之后,vimdiff 会试图自动来重新比较文件, 来实时反映比较结果。但是也会有处理失败的情况,这时需要用 ":diffupdate" 手工来刷新比较结果。
同时操作两个文件
同时退出使用 ":qa",即 quit all。
如果希望保存全部文件则使用 ":wa",即 write all。
保存全部文件,然后退出则使用 ":wqa"。
退出的时候不希望保存任何操作的结果则使用 ":qa!"。
上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。 vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。 其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置: ":set diffopt=context:3"。