启动方法

首先保证系统中的diff命令是可用的。Vim的diff模式是依赖于diff命令的。Vimdiff的基本用法就是:

# vimdiff  FILE_LEFT  FILE_RIGHT

或者

# vim -d  FILE_LEFT  FILE_RIGHT

除了用这种方法启动vim的diff模式之外,我们还可以用分割窗口命令来启动diff模式:

# vim FILE_LEFT

然后在vim的ex模式(也就是"冒号"模式)下输入:

:vertical diffsplit FILE_RIGHT

也可以达到同样的效果。如果希望交换两个窗口的位置,或者希望改变窗口的分割方式,可以使用下列命令:

1. Ctrl-w K(把当前窗口移到最上边)
2. Ctrl-w H(把当前窗口移到最左边)
3. Ctrl-w J(把当前窗口移到最下边)
4. Ctrl-w L(把当前窗口移到最右边)

其中1和3两个操作会把窗口改成水平分割方式。

光标移动

接下来试试在行间移动光标,可以看到左右两侧的屏幕滚动是同步的。这是因为"scrollbind"选项被设置了的结果,vim会尽力保证两侧文件的对齐。如果不想要这个特性,可以设置:

:set noscrollbind

可以使用快捷键在各个差异点之间快速移动。跳转到下一个差异点:

]c

反向跳转是:

[c

如果在命令前加上数字的话,可以跳过一个或数个差异点,从而实现跳的更远。比如如果在位于第一个差异点的行输入"2]c",将越过下一个差异点,跳转到第三个差异点。

文件合并

文件比较的最终目的之一就是合并,以消除差异。如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令

dp (diff "put")

如果希望把另一个文件的内容复制到当前行中,可以使用命令

do (diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)

如果希望手工修改某一行,可以使用通常的vim操作。如果希望在两个文件之间来回跳转,可以用下列命令序列:

Ctrl-w, w

在修改一个或两个文件之后,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)

linux命令(36):vimdiff文件对比的更多相关文章

  1. 分布式进阶(十) linux命令行下载文件以及常用工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel

    linux命令行下载文件以及常用工具:wget.Prozilla.MyGet.Linuxdown.Curl.Axel 本文介绍常用的几种命令行式的下载工具:wget.Prozilla.MyGet.Li ...

  2. Linux 命令安装bin文件

    Linux 命令安装bin文件 安装命令: //1,增加文件的可执行权限 chmod a+x jdk-6u30-linux-x64.bin //2,程序即安装在执行命令的文件夹下 ./jdk-6u30 ...

  3. Linux命令-自动挂载文件/etc/fstab功能详解

    Linux命令-自动挂载文件etcfstab功能详解 一./etc/fstab文件的作用 磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载. 系 ...

  4. 【转载】Linux命令-自动挂载文件/etc/fstab功能详解[转]

    博客园 首页 新随笔 联系 订阅 管理 随笔 - 322  文章 - 0  评论 - 19 Linux命令-自动挂载文件/etc/fstab功能详解[转]     一./etc/fstab文件的作用 ...

  5. ASP.NET CORE Linux发布工具(文件对比 只上传差异文件;自动启停WebServer命令;上传完成自动预热WebServer)

    最近这几日在搞一个小网站:教你啊 :(感兴趣的朋友可以来捧场,在这个网站上有任何消费我都可以退还) 由于更新频繁,手动更新特别麻烦,于是开发了这个小工具 用了一段时间,还是挺顺手的,同时.NET Co ...

  6. Linux 命令 - chown: 更改文件的所有者和所属群组

    chown 命令用来更改文件或者目录的所有者和所属群组.使用这个命令需要超级用户的权限. 命令格式 chown [OPTION]... [OWNER][:[GROUP]] FILE... chown ...

  7. 转载:Linux命令之查看文件占用空间大小-du,df

    转载自:<du命令>-linux命令五分钟系列之三 du(disk usage),顾名思义,查看目录/文件占用空间大小 #查看当前目录下的所有目录以及子目录的大小$ du -h $ du ...

  8. Linux命令之查看文件夹、文件数量及其所占磁盘空间

    一.查看数量 # 查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l # 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表 ...

  9. Linux 入门记录:十七、Linux 命令行文本/文件处理工具

    一.文件浏览 cat 查看文件内容 more 以翻页形式查看文件内容(只能向下翻页) less 以翻页形式查看文件内容(可以上下翻页) head 查看文件的头几行(默认10行) tail 查看文件的尾 ...

  10. Linux命令总结_文件的输入与 输出

    1.echo命令 例子:echo string 解释:echo命令用于显示文本或变量,或者把字符串输入到文件,常用的几个特殊字符有以下几个 \c 不换行 \f 进纸 \t 调格 \n 换行 例子:ec ...

随机推荐

  1. Log4j 把不同包的日志打印到不同位置

    如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个 Appender的日志级别.打印形式.输出位置! 配置log4j.properties文件如下: ####### ...

  2. poj 2632 Crashing Robots(模拟)

    链接:poj 2632 题意:在n*m的房间有num个机器,它们的坐标和方向已知,现给定一些指令及机器k运行的次数, L代表机器方向向左旋转90°,R代表机器方向向右旋转90°,F表示前进,每次前进一 ...

  3. ios中地图定位

    #import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface ViewController ...

  4. 工程部署从tomcat6.0迁移到jboss6.0错误总结

    2014-11-08 内容存档在evernote,笔记名"工程部署从tomcat6.0迁移到jboss6.0错误总结"

  5. Ubuntu菜鸟入门(十三)—— 切换软件源

    默认中国服务器,我们把它切换成aliyun的. 在设置--软件和更新里--下载自--其他站点--中国--http://mirrors.aliyun.com/ubuntu 先把所有软件源和软件更新到最新 ...

  6. ASP.NET MVC3 Model验证总结 @Html.ValidationSummary(true)

    http://www.wyjexplorer.cn/Post/2012/8/3/model-validation-in-aspnet-mvc3 ASP.NET MVC3中的Model是自验证的,这是通 ...

  7. JetBrains C++ IDE CLion配置与评测

    等了大半年的JetBrains C++ IDE千呼万唤始出来!上次我猜2014年肯定发布,今天经@wet2_cn同学的提醒,我去官博一看,嘿!有了!赶紧安装试了一把,感觉这是迄今为止用过最好的Cpp ...

  8. java 发送post请求参数中含有+会转化为空格的问题

    如题 原因分析:参数在传递过程中经历的几次编码和解码标准不同,导致加号.空格等字符的错误. 解决方案:将post请求的参数中 ,含有+号的,统统采用%2B 去替换,这是URL的协议问题.

  9. mysql FullText全文索引的问题

    今天有同学问题,搜索ip的时候怎样能把 select ip from tabelx where ip like '%192.168.0.1%' 这种句子的性能优化. 的确,使用 like %x 的方式 ...

  10. SQLAlchemy(2) -- SQLAlchemy的安装

    安装前要先安装好python 1.使用setup.py脚本进行安装C:\> C:\Python27\python.exe .\setup.py installrunning installrun ...