Command-Line

命令行差異工具

  • February 6, 2019

所以我們都diff預設安裝了這個命令。我當然不知道如何使用。但我希望有一些合理的預設用法。但是當我輸入時,diff file1 file2我得到了……一個文本……我必須在腦海中解析……這無助於這是兩個文本的奇怪組合,而這兩個文本本身又非常複雜。

所以我尋找了一個圖形解決方案,例如meld. 開箱即用的效果要好得多。

然而,我更願意一直呆在命令行上。是否有一個相當標準的命令:

  • 預設使用顏色,可以採用語法高亮
  • 呈現並排差異並預設進行 3 路合併
  • 在命令行上工作,例如通過libncurses
  • 既不依賴也不依賴vimemacsIDE
  • 可以就地修改編輯過的文件嗎?

如果不是,為什麼不呢?我看了看,colordiff但它並沒有完全削減它。

我擔心這個答案不會讓你滿意,但我認為你提出了相互矛盾的約束。

關於差異

但首先我必須為經典的 diff 工具辯護:它的主要目的是生成應該由機器在應用程序上處理的軟體更新檔。此外,這些更新檔設計得盡可能緊湊,理想情況下只使用 ASCII 字元,以便可以通過電子郵件、Usenet 等快速可靠地共享它們。

這些更新檔可以被人類閱讀(並且被一些人理解)也是一個重要的屬性,但不是首要任務。

你的問題

我完全理解並分享您對簡單和基本命令行工具的渴望,但是並排差異,可能帶有顏色突出顯示,既不簡單,也不屬於我們對真正命令行工具的期望範圍,僅僅是因為它不再是面向線的。

緊隨其後的是基於 Vi 或 Emacs 的工具,它們盡可能簡單明了地便於人類接收,同時具有高度的靈活性。它們還提供強大的合併功能。

形成這些,vimdiff已經在評論中提到過。

關於 Emacs,文件比較通常從編輯器中開始。最常用的工具是 Ediff,它提供了對應於各種需求的無數入口點:比較兩個文件、樹文件、其中一個被視為共同祖先,等等。可能的合併也是如此。

儘管不尋常,我還是從命令行安裝了對 Ediff 的訪問權限:如果您使用 Emacs 啟動

emacs FILE1 FILE2 -nw --eval "(apply 'ediff-buffers (last (nreverse (buffer-list)) 2))"

然後您直接跳轉到一個互動式 Ediff 會話,該會話FILE1FILE2您的終端中進行比較。如果您省略該-nw選項(並且滿足所有要求),您將在單獨的圖形框架中獲得相同的會話。另請參閱ashutosh jain 的這個相關問題

好吧,我不會說 Emacs 是一個簡單的工具。但是如果你仔細研究它幾年,你會喜歡它的。(個人意見。)

所以,很遺憾沒有:我不知道有任何工具可以滿足您的所有限制。

引用自:https://unix.stackexchange.com/questions/498815