[TOC]
前言 描述:源程序文件(通常是纯文本文件)比较和合并工具一直是软件开发过程中比较重要的组成部分,现在市场上很多功能很强大的专用比较和合并工具:
比如 BeyondCompare很多IDE或者软件配置管理系统,比如Eclipse, Rational ClearCase都提供了内建的功能来支持文件的比较和合并;
当远程工作在Unix/Linux平台上的时候,恐怕最简单而且到处存在的就是命令行工具,比如diff(可惜diff的功能有限,使用起来也不是很方便);
Vim提供的diff模式通常称作vimdiff
作为命令行的比较工具,我们仍然希望能拥有简单明了的界面,可以使我们能够对比较结果一目了然;我们还希望能够在比较出来的多处差异之间快速定位,希望能够很容易的进行文件合并;
vimdiff 使用 Vim的diff模式是依赖于diff命令的,且vimdiff中快捷键与vim有共通的地方;
Vimdiff的基本用法就是:
[TOC]
前言 描述:源程序文件(通常是纯文本文件)比较和合并工具一直是软件开发过程中比较重要的组成部分,现在市场上很多功能很强大的专用比较和合并工具:
比如 BeyondCompare很多IDE或者软件配置管理系统,比如Eclipse, Rational ClearCase都提供了内建的功能来支持文件的比较和合并;
当远程工作在Unix/Linux平台上的时候,恐怕最简单而且到处存在的就是命令行工具,比如diff(可惜diff的功能有限,使用起来也不是很方便);
Vim提供的diff模式通常称作vimdiff
作为命令行的比较工具,我们仍然希望能拥有简单明了的界面,可以使我们能够对比较结果一目了然;我们还希望能够在比较出来的多处差异之间快速定位,希望能够很容易的进行文件合并;
vimdiff 使用 Vim的diff模式是依赖于diff命令的,且vimdiff中快捷键与vim有共通的地方;
Vimdiff的基本用法就是:1 2 3 4 5 6 7 vimdiff FILE_LEFT FILE_RIGHT vim -d FILE_LEFT FILE_RIGHT vim FILE_LEFT :vertical diffsplit FILE_RIGHT
同时操作两个文件在比较和合并告一段落之后,可以用下列命令对两个文件同时进行操作。1 2 3 4 5 6 7 8 :qa (quit all) :wa (write all) :wqa (write, then quit all) :qa! (force to quit all)
光标移动 接下来试试在行间移动光标,可以看到左右两侧的屏幕滚动是同步的,这是因为”scrollbind”选项被设置了的结果,vim会尽力保证两侧文件的对齐:1 2 3 4 5 6 ctrl+w :set noscrollbind ]c [c
如果在命令前加上数字的话,可以跳过一个或数个差异点从而实现跳的更远,比如如果在位于第一个差异点的行输入”2]c”,将越过下一个差异点,跳转到第三个差异点。
如果希望交换两个窗口的位置或者希望改变窗口的分割方式可以使用下列命令:1 2 3 4 5 1. Ctrl - w - K(把当前窗口移到最上边) 2. Ctrl - w - H(把当前窗口移到最左边) 3. Ctrl - w - J(把当前窗口移到最下边) 4. Ctrl - w - L(把当前窗口移到最右边)
文件合并 文件比较的最终目的之一就是合并,以消除差异。1 2 3 4 5 6 dp | (diff "put" ) do | (diff "get" ,之所以不用dg,是因为dg已经被另一个命令占用了):diffupdate
如果希望撤销修改可以和平常用vim编辑一样直接, u,但是要注意一定要将光标移动到需要撤销修改的文件窗口中。
先指定范围1-100行,再用当前窗口的不同处替换到另外一个窗口:1 2 3 输入"1,100 diffpu" .或输入"1,100 diffput" . 输入"1,100 diffg 3" .或输入"1,100 diffget 3" .
2.先指定范围1-100行,再用另外一个窗口的不同处替换当前:1 2 3 4 输入"1,100 diffg" .或输入"1,100 diffget" . 输入"1,100 diffg 3" .或输入"1,100 diffget 3" .
上下文的展开和查看 描述:比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作,Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。
其他的相同的文本行被自动折叠,如果希望修改缺省的上下文行数,可以这样设置:1 2 3 4 5 :set diffopt=context:3 #就是不同之处的上3行和下3行不能折叠 #打开折叠代码。之所以用z这个字母,是因为它看上去比较像折叠着的纸:) zo (folding open) #重新折叠起来 zc (folding close)
基础示例 描述:两个文件中都存在但是包含差异的行显示为粉色背景,引起差异的文字用红色背景加以突出。1 vimdiff FILE_LEFT FILE_RIGHT
weiyigeek.top-