技巧:Vimdiff 使用

MATLAB 设置legend加标题 x1 = linspace(0,5); y1 = sin(x1/2); plot(x1,y1) hold on x2 = [0 1 2 3 4 5]; y2 = [0.2 0.3 0.6 1 0.7 0.6]; scatter(x2,y2,'filled') hold off legend({'sin(x/2)','2016'},'Location','northwest','Orientation','horizontal')%水平 legend添加标题 lgd = legend; lgd.Fon 阅读详情

日期:2006-08-07 作者:高延斌(IBM中国软件开发中心) 来自:IBM DW

各种 IDE 大行其道的同时,传统的命令行工具以其短小精悍,随手可得的特点仍有很大的生存空间,这篇短文介绍了一个文本比较和合并的小工具:vimdiff。希望能对在 Unix/Linux 系统上进行开发的朋友有所帮助。

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

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

启动方法

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

 

# vimdiff  FILE_LEFT  FILE_RIGHT

 

或者

 

# vim -d  FILE_LEFT  FILE_RIGHT

 

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


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

除了用这种方法启动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)


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



结论

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

 

PMP--二模--解题--161-170 A:邀请团队成员在下一次回顾中分享经验。B:请求发起人增加具有所需经验的团队成员。C:在团队内计划知识共享会议。D:请求发起人为团队提供培训课程。A。 阅读详情

相关推荐

如何制作微信小程序的在线购物商城应用

首先,你需要规划好商城的整体框架,确定好你的目标用户群体,思考他们的需求是什么。接下来,使用微信开发者工具创建一个新的小程序项目,输入你的AppID,选择好保存路径,点击“创建”,一个新的商城雏形就诞生了。你可以把这里当作自己的家,无论是工作之余的小憩,还是寻找灵感的驿站,我都希望你能在这里找到属于你的那份快乐和满足。数据是现代商业的灵魂,通过数据分析,你可以更准确地把握用户的行为模式,从而做出更明智的决策。

master_chenchen的博客 2427

针对DiffHand(自动优化机械臂)算法的Python语法理解_机器学习前面代码详解

DiffHand:An End-to-End Differentiable Framework for Contact-Aware Robot Design算法概述 为了解决之前算法研究机械臂抓取和生成机械臂(包括机械手和关节)的算法分开来研究,比如有的控制算法很复杂,但是机械臂只是很普通常见的终端(grippers),或者是生成很复杂机械手,但是控制算法只是从上往下抓,导致这两者不能很好联系起来。 左边是普通机械臂,中间是DiffHand算法优化的机械臂,右边是可以3D打印的机械臂。 本算法将生成机械臂

没有最好,只有更好 2208

中兴通讯招聘测评答题技巧,真题解析(附真题)

中兴招聘测评、中兴入职测评、中兴线上考试

guang221315221的博客 5803

使用 vimdiff 比较文件的技巧

1. 使用 vimdiff 命令可以比较两个文件的差异,不同的地方高亮显示,如下图所示: 2. 在一行不同处,输入do可将另一个buffer的改动应用于当前buffer,输入dp 可将当前buffer的该行内容应用于另一个buffer。 3. 输入] c跳到下一个不同行;输入[c 跳到上一个不同行。 4. 横向对比时,由于屏幕宽度有限,所以每次要到两个buffer分别:set wrap来...

sean_8180的博客 8533

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

Python实战:5分钟搞定抖音无水印视频下载(附完整代码)

本文系统介绍了抖音无水印视频下载的多种技术方案,重点解析了抖音视频的获取逻辑与去水印原理。文章提供了从零代码的浏览器插件到可编程的Python脚本的完整实现路径,并附带了详细的代码示例,帮助用户快速构建自己的抖音视频下载工具箱。

weixin_29089057的博客 847

vimdiff比较两个文件

实用的vim下比较两个文件命令: 1、 vimdiff file1 file2 终端下输入该命令进入vim,垂直分隔窗口进行比较 2、 vimdiff -o file1 file2 水平分隔窗口进行比较 3、 ctrl+w (j,k,h,l) 上下左右切换光标所在的窗口(括号中表示可以是其中之一,按下ctrl+w,放开ctrl再按j,k,h,l) 4、 ct...

weixin_30389003的博客 591

如何用Python爬取中国土地市场网2000-2023年土地出让数据(含经纬度)

本文详细介绍了如何使用Python爬取中国土地市场网2000-2023年的土地出让数据(含经纬度),提供了一套高效的技术方案。通过应对动态加载的反爬机制、优化地理编码数据存储和设计异常处理流程,帮助开发者建立自动化数据采集管道。方案已在商业地产分析项目中验证,可稳定采集超过50万条土地交易记录。

weixin_30566063的博客 172

linux vim 命令无效,Linux vim 命令 command not found vim 命令详解 vim 命令未找到 vim 命令安装 - CommandNotFound ⚡️ 坑否...

显示行号|选择喜欢的代码风格默认GitHubDuneLakeSidePlateauVibrantBlueEightiesTranquilVim(ViImproved)编辑器是功能强大的跨平台文本文件编辑工具,继承自 Unix 系统的 Vi 编辑器,支持 Linux/Mac OS X/Windows 系统,利用它可以建立、修改文本文件。vim 命令安装:-bash: vim: command not...

weixin_42136365的博客 1725

华为OD机试双机位C卷-停车场收入统计 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 停车场收入统计,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 停车场收入统计。

qq_45776114的博客 2185

Cadence PCB 仿真宝典【目录】

欢迎大家来到《Cadence PCB 仿真宝典》该专栏包括【入门篇】【提升篇】【技巧篇】【疑难篇】四个部分,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。

fydar的博客 3269

vim: command not found 绝妙解决方案

出现 command not found 的原因是没有安装 xxx mac 系统有预装 vim,直接可使用,可以通过 vim --version 来查看版本等信息。 不建议删除或更新系统预装的Vim,推荐新安装Vim的Mac实现--MacVim。 出现错误的原因 在安装软件修改环境变量时,不小心把环境变量删除或者搞乱了,导致vim不可使用。 两个解决方案 1. 安装MacVim 教程地址:https://zhuanlan.zhihu.com/p/64024294 ( 我没有亲自安装过,.

KEEP RUNNING的博客 1万+

HFSS实战项目——GPS北斗双模微带天线

本文设计了一款方形圆极化微带天线应用于北斗B1和GPSL1频段,满足高增益、低VSWR、适当方向图等要求。设计中心频率为1568MHz,介质板采用厚度h=1.6mm的Arlon AD450(tm)板,相对介电常数为4.5,采用探针馈电。

2401_87464239的博客 1767

python vimdiff_技巧:Vimdiff 使用

首先保证系统中的diff命令是可用的。Vim的diff模式是依赖于diff命令的。Vimdiff的基本用法就是:# vimdiff FILE_LEFT FILE_RIGHT或者 # vim -d FILE_LEFT FILE_RIGHT除了用这种方法启动vim的diff模式之外,我们还可以用分割窗口命令来启动diff模式:# vim FILE_LEFT然后在vim的ex模式(也就是"冒号"模...

weixin_39611765的博客 316

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

下一篇: VIM下的跳转练习
green__hand
博客等级 码龄20年 5粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值