Linux 下的 Diff 工具 Meld 和 Vimdiff

Linux 下的 Diff 工具 Meld 和 Vimdiff

Chris Yue No Comment
Posts

大家都玩过“找不同”这个游戏吧?程序员的工作之一就是“找不同”。不过,面对成百上千的代码找不同,可就没这么好玩了。

好在目前有许多对比软件辅助我们找不同,有了这些工具,妈妈不再担心我的狗眼了。

光是在 Linux 下,diff 工具就有好多,这里只给大家介绍两个典型的:

Meld(GUI) 一款优秀的开源软件,在 Mac 以及 Windows 下也有对应的版本
和大多数 diff 工具类似,Meld 除了提供对比、合并功能以外,还提供目录对比功能

Vimdiff,也可以使用 vim -d 来启动,不得不提到它是因为 1) 一般 Linux 发行版都自带的;2) 适合键盘操作

目前最常用到对比的情况肯定要数版本管理软件对比不同版本代码了。以 git 为例,从 1.7 版本开始,git 提供了 difftool 命令:

git difftool <commit1> <commit2>

比如刚 pull下来的代码有一个提交,想查看跟提交之前的代码相比有什么改进,我们就可以:

git difftool HEAD~1

此时 git 会根据目前安装的软件,调用 diff 工具,meld 在名单中为第一个,所以默认会开启他(vimdiff 在最后……)。当然也可以通过 -t 参数来指定要使用的 diff 工具

git difftool -t vimdiff HEAD~1
vimdiff

你也可以添加 -D 参数,查看所有——包括目录——的变化:

git difftool -D HEAD~1

查看目录变化,Meld 比 vimdiff 更胜一筹,因为他可以根据目录的浏览变化,同步左右对比窗口,使显示状态始终一致,而 vimdiff 就没那么机智了

git 也提供 mergetool 命令,来辅助合并操作,操作方式跟 difftool 一样

得易于 GUI 的鼠标操作,Meld 在处理合并时,更像“找不同”,只需动动鼠标,点击箭头来选择冲突位置要本地代码还是远端代码。

Meld

而 vim-diff 只能提供参考,真正合并操作还是需要你自己去编辑,跟传统的合并方式并无二异。

当然 meld 也有不好的地方,他不能缩小文字,当代码较长的时候,需要通过拖动滚动条来查看异同,程序员们应该都会觉得这是一件很痛苦的事情。而 vimdiff 可能会得益于 terminal 的缩小文字功能(比如说 ubuntu 的),可以显示更多的代码。

话说到这里,其实按编码标准及时换行(一般都会要求建议不超过 80 字符,最多不超过 120 字符),以及使用更大的屏幕才是最终的王道吧

Linux 下的 Diff 工具 Meld 和 Vimdiff by Chris Yue is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

微信赞赏码

写作累,服务器也越来越贵
求分担,祝愿好人一生平安
天使打赏人

发表评论

44 − 41 =