0026. shell命令--vimdiff

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

目录

26. shell命令--vimdiff

功能说明

语法格式

选项说明

实践操作

注意事项


26. shell命令--vimdiff

功能说明

        vimdiff 命令来自英文词组“Vim differences”的缩写,其功能是用于同时编辑多个文本文件。对纯文本文件的比较和合并工具一直是软件开发过程中比较重要的组成部分,vimdiff命令能够比较多个文本文件之间的差异并快速定位,并很容易地进行文件合并操作。

        vimdiff 是 Vim 编辑器的一个功能,用于比较两个文件或者两个文件的不同之处,并在一个 Vim 窗口中显示这些差异。它通常用于比较修改前后的文件,或者比较两个版本的文件。

        在使用 vimdiff 时,Vim 会将两个文件以并排的方式显示在屏幕上,相同的部分会以相同的颜色显示,而不同的部分则会以不同的颜色或者特殊的标记显示出来。用户可以在这个界面上方便地查看、编辑并保存文件。

vimdiff 优点

vimdiff 具有许多优点,使其成为比较和合并文件的强大工具之一

  • 内置于 Vim: vimdiff 是 Vim 编辑器的一部分,因此不需要额外安装或配置,用户可以立即使用。
  • 灵活的定制性: Vim 是一个高度可定制的编辑器,用户可以根据自己的喜好和需求定制 vimdiff 的外观和行为,使其更符合个人偏好。
  • 强大的编辑功能: 作为一个文本编辑器,Vim 拥有强大的编辑功能,包括搜索替换、文本操作等,这使得在 vimdiff 中查看和编辑差异变得非常方便。
  • 支持多种文件格式: vimdiff 不仅可以比较普通的文本文件,还可以比较各种文件格式,如源代码、配置文件等。
  • 直观的界面: vimdiff 以并排的方式显示两个文件的差异,相同的部分以相同的颜色显示,不同的部分以不同的颜色或者特殊的标记显示,这种直观的界面使用户能够快速地理解文件之间的差异。
  • 支持合并操作: 除了比较文件之外,vimdiff 还支持合并文件的操作,用户可以方便地将两个文件的差异合并到一个文件中。
  • 可扩展性: Vim 社区提供了许多插件和脚本,可以进一步扩展 vimdiff 的功能,使其更加强大和易用。

语法格式

SYNOPSIS
       vimdiff [options] file1 file2 [file3 [file4]]

       gvimdiff
               
vimdiff [options] file1 file2 [file3]
#file1 和 file2 是要比较的文件。
#file3(可选)是第三个文件,主要用于三个文件之间的比较。

选项说明

vimdiff 继承了 Vim 的许多命令行选项,但以下是与比较功能直接相关的选项:

  • -c cmd:在启动 Vim 后执行 Vim 命令 cmd。
  • -d:与 vimdiff 命令本身的功能相同(即启动 Vim 的 diff 模式)。
  • -R 或 --readonly:以只读模式打开文件。
  • -O 或 --vertical:水平分割窗口,而不是默认的垂直分割。
  • --remote-tab:在现有的 Vim 实例中打开文件作为新标签页(如果可能)。

常用参数说明

dd:剪切当前行
数字dd:剪切当前行开始的多行
p:粘贴
:qa :同时退出多个文件
u:撤销操作
wa:保存文件
wqa:保存并退出
yy:复制当前行
数字yy:复制当前行开始的多行

窗口切换快捷键

Ctrl-w b #跳转到最底下的窗口
Ctrl-w h #跳转到左边的窗口
Ctrl-w H #把当前窗口移到最左边
Ctrl-w j #跳转到下边的窗口
Ctrl-w J #把当前窗口移到最下边
Ctrl-w k #跳转到上边的窗口
Ctrl-w K #把当前窗口移到最上边
Ctrl-w l #跳转到右边的窗口
Ctrl-w L #把当前窗口移到最右边
Ctrl-w t #跳转到最上面的窗口
Ctrl-w w #跳转到另一个窗口

实践操作

1. 比较两个文件 file1.txt 和 file2.txt
mkdir -p /test/vimdiff
cd /test/vimdiff
seq 100 >file1.txt
seq 100 |rev >file2.txt
vimdiff file1.txt file2.txt
#vimdiff 会打开一个新窗口,左侧显示 file1 的内容,右侧显示 file2 的内容。
#屏幕被垂直分割,左右两侧分别显示被比较的两个文件。
#两个文件中连续的相同的行被折叠了起来,以便使用者能把注意力集中在两个文件的差异上。
#只在某一文件中存在的行的背景色被设置为蓝色,而在另一文件中的对应位置被显示为绿色。
#两个文件中都存在,但是包含差异的行显示为粉色背景,引起差异的文字用红色背景加以突出。
#使用 vimdiff 的移动光标和编辑命令来查看并编辑文件
#如需保存修改,可以按下:wq保存并退出,或者:qa退出而不保存。
#通过 vimdiff,用户可以轻松地比较文件之间的差异,并进行必要的修改和合并。
#这对于程序员、文档编辑者以及任何需要处理多个版本文件的人来说都是非常有用的工具。
1.1 光标移动
1.1.1 屏幕滚动同步
#接下来试试在行间移动光标,可以看到左右两侧的屏幕滚动是同步的。
#这是因为 scrollbind 选项被设置了的结果,vimdiff 会尽力保证两侧文件的对齐。
#如果不想要这个特性,可以设置:
:set noscrollbind    #取消屏幕滚动同步
:set scrollbind    #设置屏幕滚动同步

1.1.2 各个差异点之间快速移动
#可以使用快捷键在各个差异点之间快速移动。跳转到下一个差异点
]c    #从上到下跳转差异
[c    #从下到上跳转差异
#如果在命令前加上数字的话,可以跳过一个或数个差异点,从而实现跳的更远。
#比如如果在位于第一个差异点的行输入 2]c,将越过下一个差异点,跳转到第三个差异点。

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

1.2 文件合并
1.2.1 文件1复制到文件2
#文件比较的最终目的之一就是合并,以消除差异。
#如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令:
dp (diff "put")    #先用]c,跳到差异点

1.2.2 文件2复制到文件1
#如果希望把另一个文件的内容复制到当前行中,可以使用命令
do (diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)

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

1.2.4 撤销修改
#如果希望撤销修改,可以和平常用 vim 编辑一样,直接
<ESC>, u

1.3 文本编辑
#在 vimdiff 中,可以在左右两个窗口中进行文本编辑。
#按i进入插入模式编辑文本。
#使用Esc键退出插入模式。
#使用:w保存修改。

1.4 上下文的展开和查看
#比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。
#Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。
#其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置:
gg    #按gg跳转到行首,来查看差异
:set diffopt=context:3    
#可以用简单的折叠命令来临时展开被折叠的相同的文本行:
zo (folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸)
#然后可以用下列命令来重新折叠:
zc (folding close)

1.5 同时操作两个文件
#在比较和合并告一段落之后,可以用下列命令对两个文件同时进行操作。比如同时退出
:qa (quit all)
#如果希望保存全部文件:
:wa (write all)
#或者是两者的合并命令,保存全部文件,然后退出:
:wqa (write, then quit all)
#如果在退出的时候不希望保存任何操作的结果:
:qa! (force to quit all)

2. 窗口操作的演示
2.1 水平切分
vimdiff -o file1.txt file2.txt 

2.2 垂直切分
vimdiff -O file1.txt file2.txt 
vimdiff file1.txt file2.txt    #默认就是垂直切分

2.3 指定分屏个数
vimdiff 3 file1.txt file2.txt

2.4 多个方向的分屏
vimdiff file1.txt file2.txt
#在 Vimdif 中,可以使用 
#:vsplit 命令来垂直分屏,
#:split 命令来水平分屏
2.4.1 分屏:
按下 Ctrl+w v #以垂直分屏
按下 Ctrl+w s #以水平分屏

2.4.2 窗口切换
按下 Ctrl+w l #跳转到右边的窗口
按下 Ctrl+w h #跳转到左边的窗口
按下 Ctrl+w j #跳转到下边的窗口
按下 Ctrl+w k #跳转到上边的窗口

2.4.3 创建新的垂直分屏
#选中其中一个分屏,切换到另一个文件,执行以下命令
#这将会在当前选中的分屏右侧创建一个新的垂直分屏,显示 file3.txt,并进行比较
:vert diffsplit file3.txt

2.4.4 创建新的水平分屏
#选中任何一个分屏,执行以下命令
#这将会在当前选中的分屏下方创建一个新的水平分屏,显示 file4.txt,并进行比较
:vertical res diffsplit file4.txt

2.4.4 退出方法
#要退出 vimdiff 并保存所有文件的更改,使用 :wqall。
#要退出但不保存更改,使用 :qa!。

注意事项

其它说明

在 vimdiff 中,你可以使用以下操作来比较和编辑文件:

  • 导航:使用 Vim 的正常导航命令(如 h, j, k, l,或箭头键)在文件之间移动。
  • 滚动:使用 Vim 的滚动命令(如 Ctrl-f 或 Ctrl-b)滚动查看文件的其余部分。
  • 差异查看:Vim 会高亮显示两个文件之间的差异。你可以通过查看这些差异来比较文件。
  • 切换文件:使用 :diffthis 命令将当前窗口中的文件添加到差异比较中,或使用 :diffsplit 命令打开另一个文件进行比较。
  • 合并差异:你可以编辑文件以合并差异,或者使用 Vim 的差异合并命令(如 :diffget 或 :diffput)来自动合并某些更改。
  • 保存文件:使用 Vim 的正常保存命令(如 :w 或 :wq)保存文件。

退出

  • 要退出 vimdiff 并保存所有文件的更改,使用 :wqall。
  • 要退出但不保存更改,使用 :qa!。

自定义

        你可以通过编辑你的 Vim 配置文件(通常是 ~/.vimrc)来自定义 vimdiff 的外观和行为。例如,你可以更改差异高亮颜色、设置默认的窗口布局等。

示例

        假设你有两个文件 file1.txt 和 file2.txt,你可以使用以下命令来比较它们:

vimdiff file1.txt file2.txt

        这将启动 Vim 并显示两个垂直分割的窗口,分别包含 file1.txt 和 file2.txt 的内容。你可以通过查看高亮显示的差异来比较这两个文件。

1. 快捷键和高级功能

vimdiff 提供了许多快捷键和高级功能,以进一步提高文件比较和编辑的效率。以下是一些常用的快捷键和功能的简要说明:

  • 切换差异:在比较两个文件时,你可以使用 ]c 和 [c 快捷键在差异之间快速切换。
  • 跳转到下一个/上一个差异:使用 ]d 和 [d 快捷键可以快速跳转到下一个或上一个差异。
  • 折叠/展开差异:vimdiff 支持代码折叠功能,你可以使用 zc 折叠当前差异,使用 zo 展开当前差异。使用 zM 折叠所有差异,使用 zR 展开所有差异。
  • 差异合并:除了使用 :diffget 和 :diffput 命令外,你还可以使用 do 快捷键将当前差异从另一个文件合并到当前文件中。
  • 跳转到特定行:你可以使用 Vim 的行号跳转功能(如 :10G 跳转到第10行)来快速定位到文件中的特定行。
  • 搜索:使用 Vim 的搜索功能(如 /pattern 搜索包含 "pattern" 的文本)来在文件中查找特定的内容。
  • 外部命令:在 vimdiff 中,你可以使用 :!command 执行外部命令,并在 Vim 中查看命令的输出。
  1. 插件和扩展

        vimdiff 本身已经非常强大,但你可以通过安装插件和扩展来进一步增强其功能。有许多 Vim 插件专门用于改进差异比较、合并和其他与文件比较相关的任务。你可以在 Vim 的官方网站或其他 Vim 社区网站上找到这些插件。

2. 注意事项

  • 在使用 vimdiff 时,请确保你的 Vim 版本支持差异比较功能。大多数现代 Vim 版本都支持此功能,但较旧的版本可能不支持。
  • 在编辑和保存文件时,请务必小心谨慎。由于 vimdiff 允许你同时编辑两个或三个文件,因此很容易混淆或意外更改文件内容。在保存更改之前,请务必仔细检查你的更改,并确保它们是你想要的更改。
  • 当你完成文件比较和编辑后,记得退出 vimdiff 并保存你的更改(如果适用)。不要忘记保存你的更改,否则你可能会丢失你所做的工作。
掌握Vim的艺术:精通diff模式的比较与合并 Vimdiff模式允许用户同时打开两个或多个文件,并以视觉化的方式展示它们之间的差异。这对于代码审查、版本控制和文档比较等场景非常有用。Vim使用不同的颜色来高亮显示差异,你可以通过修改Vim的高亮组来自定义这些颜色。通过本文的学习,你应该对Vimdiff模式有了深入的理解。从基础的启动和导航到高级的更改应用和自定义技巧,本文提供了全面的指导,帮助你在实际工作中更有效地使用Vim进行文件比较。希望本文能够提升你的Vim使用技能,让你在处理文件差异时更加得心应手。 阅读详情

相关推荐

Linux系统进阶详解】Linux文件工具diff,vimdiff,sort,uniq,tee,tac精讲

tee可以将命令输出同时保存到文件和标准输出,tac可以反向输出文件内容。它提供了一个图形化界面,可以方便地查看两个文件之间的差异,并进行编辑。它可以对文件中的行进行排序,并输出结果。tee:tee是一个命令行工具,它可以将标准输入复制到标准输出和一个或多个文件中。tee可以用来保存命令的输出到文件中,并且仍然将输出发送到标准输出,以便你可以在屏幕上看到它。使用场景:在进行代码合并时,可以使用vimdiff比较两个版本的代码,并进行编辑和合并。这将将命令的输出保存到file1文件中,并将其发送到标准输出。

走向CTO的路上... 1158

Linux笔记之diffvimdiff

默认使用平均的栏宽分配,但您可以使用上述方法手动调整它们以适应您的需求。中进行了更改但没有保存,Vim 可能会提示您保存更改或放弃更改,具体取决于您的操作。中调整栏(panel)宽度是可能的,这可以让您更好地适应屏幕上的差异。中的颜色差异是通过不同的语法高亮和背景颜色来表示的,具体的颜色可能取决于Vim 配置。,以了解当前的颜色配置。如果希望更改颜色,可以编辑 Vim 的颜色配置或选择不同的颜色方案来满足偏好。:通常以红色表示,被删除的行会有红色的背景。:通常以黄色表示,被更改的行会有黄色的背景。

小勇博客 3356

如何在 LinuxVim Pro 一样使用 vimdiff

vimdiffVim 的一个功能,用于比较和合并文件差异。它能够以并排的方式显示两个文件,并突出显示两者之间的差异。vimdiff 在程序开发、版本控制和协作编辑等场景中非常有用。它提供了强大的功能,如高亮差异、导航和合并冲突解决等,使得文件差异的比较和合并变得更加方便和直观。

网络技术联盟站 696

vimdiff

vimdiff

qq_41483419的博客 1976

【高效开发工具系列】vimdiff简介与使用

vimdiffVim 编辑器的一个功能,用于比较两个文件或者两个文件的不同之处,并在一个 Vim 窗口中显示这些差异。它通常用于比较修改前后的文件,或者比较两个版本的文件。在使用 vimdiff 时,Vim 会将两个文件以并排的方式显示在屏幕上,相同的部分会以相同的颜色显示,而不同的部分则会以不同的颜色或者特殊的标记显示出来。用户可以在这个界面上方便地查看、编辑并保存文件。

CSDN站内信: https://i.csdn.net/#/msg/chat/qyj19920704 1万+

vimdiff 命令使用介绍

vimdiff 等同于 vim -d 命令,即 Vim 编辑器的 diff 模式。 该命令后面通常会接两个或多个文件名作为参数,这些文件会同时在 Vim 编辑器的分割窗口中打开,并高亮显示文件中内容有差异的部分。 同时该模式下还提供部分快捷按键用于完成文件内容的合并等操作。 启动 vimdiff vimdiff 命令常用于编辑同一文件的不同历史版本,对各文件的内容进行比对与调整。如下面两个文件: ...

Zen_y的专栏 1万+

vimdiff简单使用

vimdiff的简单使用

平凡之路 3245

探索Vimdiff模式:代码差异的终极可视化工具

在软件开发的世界里,比较文件差异是一项日常任务。无论是代码审查、版本控制还是合并分支,我们经常需要找出文件之间的不同之处。Vim,这款功能强大的文本编辑器,通过其内置的diff模式,为我们提供了一个高效、直观的解决方案。本文将详细介绍Vimdiff模式,包括其用途、工作原理以及如何使用,并通过代码示例展示其强大功能。

2401_85760095的博客 1676

linux命令更新-diffvimdiff

N 或 --new-file: 在比较目录时,即使文件在一个目录中不存在,也显示出来。-b 或 --ignore-space-change: 忽略所有空白字符的变化。-H 或 --speed-large-files: 提升大文件比较的速度。-w 或 --ignore-all-space: 忽略所有空白字符。-B 或 --ignore-blank-lines: 忽略空白行。-C或 --context: 类似于 -c,但是指定上下文行数。-y 或 --side-by-side: 并列显示两边的差异。

qq_38743726的博客 1005

Linux常用高级指令(三)

文章目录一、Linux高级指令集锦二、Linux高级指令详解2.1.ln—(创建软连接,以便于查找)2.2.chmod—(改变文件/文件夹权限)2.3.find—(查找文件)2.4.grep—(查找文件内容)2.5.gvimdiff—(比较文件内容)2.6.du -sh—(查看自己的空间占用)2.7.ps -u—(查看自己使用的进程信息)2.8.top—(查看服务器所占用资源,实时进程个)2....

Mr.翟的博客 5065

非常强大的文件比较工具:Vimdiff

各种 IDE 大行其道的同时,传统的命令行工具以其短小精悍,随手可得的特点仍有很大的生存空间,这篇短文介绍了一个文本比较和合并的小工具:vimdiff。希望能对在 Unix/Linux 系统上进行开发的朋友有所帮助。源程序文件(通常是纯文本文件)比较和合并工具一直是软件开发过程中比较重要的组成部分。现在市场上很多功能很强大的专用比较和合并工具,比如 BeyondCompare;很多IDE 或者

技术资料库 6937

vimdiff 命令 – 同时编辑多个文本文件

vimdiff 命令的功能是用于同时编辑多个文本文件。对纯文本文件的比较和合并工具一直是软件开发过程中比较重要的组成部分,vimdiff命令能够比较多个文本文件之间的差异并快速定位,并很容易的进行文件合并操作。

weixin_69217438的博客 718

linux】文件与目录命令 - vimdiff

vimdiff 命令用于比较和合并多个文件的不同之处,基于 Vim 界面提供直观的文本差异显示。命令不存在,可能需要安装完整的 Vim 版本。说明:对比 3 个文件的内容,方便进行合并。说明:以 横向 方式打开多个文件对比内容。说明:以 纵向 方式打开多个文件对比内容。

小鹏linux的博客 2017

Linux(三):文件比较利器——vimdiffvim -d

vimdiffvim -d在许多方面是等效的,选择使用哪一个主要取决于个人偏好。对于专注于文件比较的用户,使用vimdiff可能更为方便;而对于习惯使用Vim命令行选项的用户,使用vim -d也是一种有效的方法。

欧阳方超的专栏 836

Linux|服务器运维|diffvimdiff命令详解

本文介绍了Linuxdiffvimdiff命令的使用方法。diff命令用于比较文本文件差异,支持多种输出格式:基本差异报告、并列显示(-y)和补丁格式(-u)。通过patch命令可以应用补丁文件进行批量更新或恢复。vimdiff提供可视化差异对比,高亮显示不同行。文章还演示了如何生成补丁文件并应用,适用于配置文件更新、代码版本迭代等场景。diff结合patch可实现轻量级的批量更新,是开发者和系统管理员的实用工具。

zsk_john的技术分享专用博客 841

vim vimdiff diff 使用及命令

vimvim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口. 之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。用法::tabnew [++opt选项] 〔+cmd〕 文件            建立对指定文件新的tab:tabc       关闭当前的tab:tabo       关闭所有其他的tab:tabs       查看所有打开的tab:tabp      前一个:tabn      后一个标准模式下:gt , gT 可以直接在tab之间切换。还有很多他命令, 看官大人自己

rangf的专栏 1万+

Linux文件比较神器:diffvimdiff详解

Linux 系统中,文件比较是一个常见的需求,特别是在代码审查、配置更改或数据对比时。命令Linux 中最基础的文件比较工具,它逐行比较两个文件并输出差异。这些工具不仅能够显示文件差异,还能帮助用户高效地合并或修改文件。允许用户直接在比较视图中编辑文件,非常适合需要手动合并差异的场景。编辑器的一个功能,它提供了一个图形化的界面来比较文件。会以分屏模式打开文件,并用颜色高亮显示差异。会以简洁的格式显示差异,包括更改、删除和添加的行。不仅限于比较文件,还可以比较目录。表示第一个文件的内容,

XWt_s1zx的博客 271

gvim介绍

https://www.cnblogs.com/heartchord/p/4872416.htmlhttps://www.cnblogs.com/dirt2/p/7668730.htmlhttps://zhuanlan.zhihu.com/p/276157743VIM map映射_vi mapping-CSDN博客

796
上一篇: 0025. shell命令--diff
下一篇: 0027. shell命令--wc
MineGi
博客等级 码龄9年 1853粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MineGi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值