所以我们都diff
默认安装了这个命令。我当然不知道如何使用它。但我希望有一些合理的默认用法。但是当我输入时,diff file1 file2
我得到……一个文本……我必须在脑海中解析……这无助于这是两个文本的奇怪组合,而这两个文本本身又非常复杂。
所以我寻找了一个图形解决方案,例如meld
. 开箱即用的效果要好得多。
然而,我更愿意一直呆在命令行上。是否有一个相当标准的命令:
- 默认使用颜色,可以采用语法高亮
- 呈现并排差异并默认进行 3 路合并
- 在命令行上工作,例如通过
libncurses
- 既不依赖也不依赖
vim
于emacs
IDE - 可以就地修改编辑过的文件吗?
如果不是,为什么不呢?我看了看,colordiff
但它并没有完全削减它。
听起来像delta会满足许多这些要求:
https://github.com/dandavison/delta
总结特点:
以上链接的示例截图:
我担心这个答案不会让你满意,但我认为你提出了相互矛盾的约束。
关于差异
但首先我必须为经典的 diff 工具辩护:它的主要目的是生成应该由机器在应用程序上处理的软件补丁。此外,这些补丁被设计为尽可能紧凑,并且理想地只使用 ASCII 字符,以便可以通过电子邮件、Usenet 等快速可靠地共享它们。
这些补丁可以被人类阅读(并且被一些人理解)也是一个重要的属性,但不是首要任务。
你的问题
我完全理解并分享您对简单和基本命令行工具的渴望,但是并排差异,可能带有颜色突出显示,既不简单,也不属于我们对真正命令行工具的期望范围,仅仅是因为它不再是面向线的。
紧随其后的是基于 Vi 或 Emacs 的工具,它们尽可能简单明了地便于人类接收,同时具有高度的灵活性。它们还提供强大的合并功能。
形成这些,
vimdiff
已经在评论中提到过。关于 Emacs,文件比较通常从编辑器中开始。最常用的工具是 Ediff,它提供了对应于各种需求的无数入口点:比较两个文件、树文件、其中一个被视为共同祖先,等等。可能的合并也是如此。
尽管不寻常,我还是从命令行安装了对 Ediff 的访问权限:如果您使用 Emacs 启动
然后您直接跳转到一个交互式 Ediff 会话,该会话
FILE1
在FILE2
您的终端中进行比较。如果您省略该-nw
选项(并且满足所有要求),您将在单独的图形框架中获得相同的会话。另请参阅ashutosh jain 的这个相关问题。好吧,我不会说 Emacs 是一个简单的工具。但是如果你仔细研究它几年,你会喜欢它的。(个人观点。)
所以,很遗憾没有:我不知道有任何工具可以满足您的所有限制。