软件开发和维护有时会变得很复杂。而你可能会发现自己在比较代码或配置的变化。
当你手动比较它们时,你可能会犯错,而且很容易错过微小的变化。除此以外,在大文件中寻找变化也是很累的。
有许多在线工具和文本编辑器可以帮助你有效地比较文件。但是有一种更简单、更省事的方法,就是使用Linux命令行来比较文件。
Linux命令行非常强大,在vim 内提供了一个文件比较工具,可以并排区分文件。
在命令行中学习文件比较很有帮助,因为许多服务器只使用CLI(命令行界面)。这意味着你没有一个可以运行浏览器或其他文本编辑器的GUI。
什么是vimdiff?
Vimdiff 是一个Linux命令,可以用 编辑一个文件的两个、三个或四个版本,并显示它们的差异。Vim
Vimdiff 语法
对于比较两个文件,其语法如下:
vimdiff [options] file1 file2
让我们比较两个文件index.js 和index.js.bkp ,看看它们的区别:
vimdiff index.js index.js.bkp
输出

Vimdiff 输出
在这里,我们可以看到高亮行的差异。
为了方便起见,我们也可以显示行号。当你在Vim ,按两次escape键进入扩展命令模式,然后输入:set number 。这将显示出当前会话的行号。

行号在vim
让我们再仔细看一下输出。

vimdiff 的详细输出:
- 未折叠的行:这 些是没有被改变的代码行。这些是被包裹的,可以使用
z+c和z+o键的组合来解除折叠。 - 突出显示的变化: 这些是文件中存在的差异。
- 行号:这些是文件中相应的行号。
- 文件名:左边的文件名是命令中提到的第一个文件名。右边的文件名是命令中提供的第二个文件名。
还有一种方法可以在Vim中默认启用行号,这样你就不必每次都手动设置。
如何在Linux上的Vim中默认显示行号
如果你喜欢在Vim 中默认查看行号,你可以按照以下步骤进行:
- 找到
vimrc文件。
Vim 配置存在于 文件中。该文件的位置可能因不同的Linux发行版而不同。在 Ubuntu 中, 文件位于 。vimrc vimrc /usr/share/vim/
2. 编辑vimrc 文件。
只需在文件中添加set number ,然后保存并退出。
现在,无论何时你打开Vim ,行号都会默认出现。
Vimdiff 操作
让我们看看如何利用vimdiff 的力量。
首先,确保你是在命令模式下。
你可以通过按两次escape 键进入命令模式。
如何水平分割屏幕
默认情况下,vimdiff 是垂直分割屏幕的。如果你喜欢看水平分割的文件,你可以像这样使用标志-o:
vimdiff -o index.js index.js.bkp
输出

水平分割
如何在差异窗口中导航
- 在差异窗口之间导航
要在窗格之间导航,可以使用Ctrl+W+W 的组合键。一旦你按下这些键,光标将在文件之间切换:
- 跳到变化处
你可以用一个特定的组合键跳到变化处,而不是逐行向下滚动并扫描变化处:
- 要移动到上一个变化,使用:
[ + c。 - 要移动到上一个变化,请使用。
] + c
如何从差异窗口应用修改
- 要把左边文件的修改应用到右边文件。
要把左边文件的修改应用到右边文件,首先,移动到突出显示的修改处。然后,使用该命令:
:diffput
记住,你需要在命令模式下:

使用diffput ,从左到右应用修改:
- 要把右边文件中的修改应用到左边文件中。
要把右边文件的修改应用到左边文件,首先,移动到突出显示的修改处。然后,使用命令:
:diffget

使用diffget ,从右到左应用修改。
如何撤销修改
如果你犯了一个错误,只要你没有保存文件,你就可以撤消更改。
当你在命令模式下,按u ,可以撤销最后的修改。
如果你最近撤销了一个改动,你将不能像以前那样看到突出显示的改动。你需要刷新一下才能再次看到这些变化。你可以通过使用命令来做到这一点。
:diffupdate
如何打开和关闭折页
未改变的行被包裹起来,以提供更好的可读性。

要查看未折叠的行,如上图所示,将光标移到那里,使用以下组合键:
- 要打开折页:
z + o。 - 关闭折页:
z + c。
如何退出差异窗口
根据最终结果,有许多方法可以退出差异窗口:
:qa退出所有的文件而不保存。:q一个一个地退出文件而不保存。:wq!一个一个地保存和退出文件。
结论
使用vimdiff ,比较文件是很容易和快速的,因为我们在命令行中比较文件。在本教程中,你学会了如何使用vimdiff 命令来有效地查找代码或配置文件的差异。
我希望你认为本教程对你有帮助,谢谢你读到最后。