首页 > 其他分享 >vimdiff使用

vimdiff使用

时间:2024-08-09 23:49:04浏览次数:13  
标签:文件 差异 vimdiffdiff 命令 vimdiff 使用 diff 比较

源程序文件(通常是纯文本文件)比较和合并工具一直是软件开发过程中比较重要的组成部分。现在市场上很多功能很强大的专用比较和合并工具,比如 BeyondCompare;很多IDE 或者软件配置管理系统,比如Eclipse, Rational ClearCase都提供了内建的功能来支持文件的比较和合并。

当远程工作在Unix/Linux平台上的时候,恐怕最简单而且到处存在的就是命令行工具,比如diff。可惜diff的功能有限,使用起来也不是 很方便。作为命令行的比较工具,我们仍然希望能拥有简单明了的界面,可以使我们能够对比较结果一目了然;我们还希望能够在比较出来的多处差异之间快速定 位,希望能够很容易的进行文件合并……。而vimdiffdiff提供的diff模式,通常称作vimdiffdiff,就是这样一个能满足所有这些需求,甚至能够提供更多的强力 工具。在最近的工作中,因为需要做很多的文件比较和合并的工作,因此对vimdiffdiff的使用做了一个简单的总结。我们先来看看vimdiffdiff的基本使用。

启动方法

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

 

# vimdiffdiff  FILE_LEFT  FILE_RIGHT

 

或者

 

# vimdiffdiff -d  FILE_LEFT  FILE_RIGHT

 

图一就是vimdiffdiff命令的执行结果的画面

从上图我们可以看到一个清晰的比较结果。屏幕被垂直分割,左右两侧分别显示被比较的两个文件。两个文件中连续的相同的行被折叠了起来,以便使用者能 把注意力集中在两个文件的差异上。只在某一文件中存在的行的背景色被设置为蓝色,而在另一文件中的对应位置被显示为绿色。两个文件中都存在,但是包含差异 的行显示为粉色背景,引起差异的文字用红色背景加以突出。

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

 

# vimdiffdiff FILE_LEFT

 

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

 

:vertical diffsplit FILE_RIGHT

 

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

1.        Ctrl-w K(把当前窗口移到最上边)

2.        Ctrl-w H(把当前窗口移到最左边)

3.        Ctrl-w J(把当前窗口移到最下边)

4.        Ctrl-w L(把当前窗口移到最右边)

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

 

 

 

 

 

回页首

 

 

光标移动

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

 

:set noscrollbind

 

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

 

]c

 

 

反向跳转是:

 

[c

 

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

 

 

 

 

 

回页首

 

 

文件合并

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

 

dp (diff "put")

 

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

 

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

 

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

 

Ctrl-w, w

 

在修改一个或两个文件之后,vimdiffdiff会试图自动来重新比较文件,来实时反映比较结果。但是也会有处理失败的情况,这个时候需要手工来刷新比较 结果:

 

:diffupdate

 

如果希望撤销修改,可以和平常用vimdiffdiff编辑一样,直接

 

<ESC>, u

 

但是要注意一定要将光标移动到需要撤销修改的文件窗口中。

 

 

 

 

 

回页首

 

 

同时操作两个文件

在比较和合并告一段落之后,可以用下列命令对两个文件同时进行操作。比如同时退出:

 

:qa (quit all)

 

如果希望保存全部文件:

 

:wa (write all)

 

或者是两者的合并命令,保存全部文件,然后退出:

 

:wqa (write, then quit all)

 

如果在退出的时候不希望保存任何操作的结果:

 

:qa! (force to quit all)

 

 

 

 

 

 

回页首

 

 

上下文的展开和查看

比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。vimdiffdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置:

 

:set diffopt=context:3

 

可以用简单的折叠命令来临时展开被折叠的相同的文本行:

 

zo (folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸)

 

然后可以用下列命令来重新折叠:

 

zc (folding close)

 

下图是设置上下文为3行,并展开了部分相同文本的vimdiffdiff屏幕:

结论

在无法使用图形化的比较工具的时候,或者在需要快速比较和合并少量文件的时候,vimdiffdiff是最好的选择。

标签:文件,差异,vimdiffdiff,命令,vimdiff,使用,diff,比较
From: https://www.cnblogs.com/smoke520/p/18351738

相关文章

  • 使用Linux实现FTP云盘1
    关于FTP服务器FTP(文件传输协议)服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP是FileTransferProtocol(文件传输协议)。程序运行,服务端不断接收客户端指令,服务端可同时处理多个客户端接入并对指令作出解析,并把执行结果返回给客户端,客户......
  • 【人工智能】常用的人工智能框架、模型、使用方法、应用场景以及代码实例的概述
    人工智能(AI)领域涉及众多框架和模型,这些框架和模型为开发人员提供了强大的工具,以构建和训练各种AI应用。以下是一些常用的人工智能框架、模型、使用方法、应用场景以及代码实例的概述。一、常用框架1.TensorFlow简介:TensorFlow是一个由谷歌开发的开源深度学习框架,支持大规模......
  • 帝国cms 批量替换字段值使用说明
    批量替换字段值一、批量替换字段值功能介绍:批量替换字段值为对信息表字段的内容进行批量替换。二、批量替换字段值:(一)、登录后台,单击“栏目”菜单,选择“批量替换字段值”子菜单,进入批量替换字段值界面:(二)、进入批量替换字段值界面:选择替换表选择要替换哪个表的字段。操......
  • Windows如何使用Alt+快捷键打出特殊符号
    原文出处:Windows电脑上如何使用Alt键加数字输出特殊符号数学符号和其他非英文字符的Alt码AltCodeSymbolalt224αalt225ßalt226Γalt227πalt228Σalt229σalt230µalt231τalt232Φalt233Θalt234Ωalt235δalt236∞alt237φalt238εalt239∩alt......
  • JNA使用入门
    JNA即JavaNativeAccess。官方主页代码仓库官方样例maven中心仓库主页官方文档GettingStartedFunctionalDescription.MappingbetweenJavaandNativeUsingPointersandArraysUsingStructuresandUnionsUsingBy-ReferenceArgumentsCustomizationofType......
  • 解决Windows系统下cmd中ping命令无法使用的问题
    问题描述:当我配置Java环境变量后,发现ping命令无法使用。 问题分析:可能是环境变量配置上出了问题,还可能是PING.EXE被删除了。解决步骤:①“Win+R”打开运行窗口,输入:C:\Windows\System32 ②点击“确定”后,看是否能够找到PING.EXE(文件名顺序一般按字母顺序)。如果没......
  • EasyX图形库使用教程
    文章目录EasyX图形库基础使用教程(快速上手)前言:本文简单详细的介绍了EasyX图形库的常用函数和操作,帮助EasyX的快速上手1、绘制简单的图形窗口1.1头文件1.2创建图形化窗口initgraphy函数closegraph函数1.3窗口坐标2、设置图形窗口属性2.1颜色设置setbkcoloRGBcleardevice......
  • docker-compose 使用实例
    catdocker-compose.yaml<<EOFversion:'3'services:#xiaomusicxiaomusic:image:my/xiaomusiccontainer_name:xiaomusicrestart:unless-stoppedports:-8090:8090volumes:-/mnt/music:/app/music......
  • [软件工具]随机地址生成工具极速版使用教程
    【极速版随机地址生成器】——您的便捷生活小助手!在快节奏的生活中,无论是填写问卷、注册账号还是保护个人隐私,一个安全、快速的地址生成工具都是不可或缺的。我们精心打造的“极速版随机地址生成器”,一键快速生成随机地址,支持导出TXT或者excel格式,可以方便后续处理和二次加工......
  • 入门学习使用overleaf和latex
    文章目录1.下载对应的latex论文模板2.overleaf平台的使用2.1overleaf平台的介绍2.2overleaf平台模板文件的上传2.3latex语法的学习2.3.2分段(如下图显示)2.3.3其他2.3.4简单latex实操2.3.5换行符和换页符2.3.6左右居中对齐2.3.7字体设置2.3.8插入固定位置图片2.3.9文......