[Command-line] Wie koloriere ich Diff in der Befehlszeile?


Answers

Benutze Vim :

diff /path/to/a /path/to/b | vim -R -

Oder noch besser, VimDiff (oder vim -d , das kürzer zu VimDiff ist) zeigt Unterschiede zwischen zwei, drei oder vier Dateien nebeneinander.

Beispiele:

vim -d /path/to/[ab]
vimdiff file1 file2 file3 file4
Question

Wenn ich ein Diff habe, wie kann ich es so einfärben, dass es gut aussieht? Ich möchte es für die Kommandozeile, also bitte keine GUI-Lösungen.




Farbiger Wort- diff Ausgang

Hier ist, was Sie mit dem folgenden Skript und diff-highlight tun können:

#!/bin/sh -eu

# Use diff-highlight to show word-level differences

diff -U3 --minimal "$@" |
  sed 's/^-/\x1b[1;31m-/;s/^+/\x1b[1;32m+/;s/^@/\x1b[1;34m@/;s/$/\x1b[0m/' |
  diff-highlight

(Kredit an @ retracile's Antwort für die sed Hervorhebung)




Und wenn yum install colordiff oder apt-get install colordiff keine Option, da Sie nicht direkt kontrolliert werden können oder Sie sich einfach nur verrückt fühlen . Sie können das Rad mit einer Reihe von sed neu erfinden :

sed 's/^-/\x1b[41m-/;s/^+/\x1b[42m+/;s/^@/\x1b[34m@/;s/$/\x1b[0m/'

Werfen Sie das in ein Shell-Skript und leiten Sie eine vereinheitlichte Diff- Ausgabe durch.

Es macht Hunk-Marker blau und markiert neue / alte Dateinamen und hinzugefügt / entfernt Linien in grün bzw. rot Hintergrund. 1 Und es wird dazu führen, dass nachfolgende Leerzeichen 2 leichter sichtbar werden als colordiff.

1 Der Grund für die Hervorhebung der Dateinamen ist übrigens, dass die Unterschiede zwischen den Dateinamen und den modifizierten Zeilen korrekt sind, wenn man das Diff-Format richtig analysieren muss, was mit einer Regex nicht zu bewältigen ist. Sie hervorzuheben funktioniert "gut genug" visuell und macht das Problem trivial. Abgesehen davon gibt es einige interessante Feinheiten .

2 Aber keine Tabulatoren. Anscheinend werden Tabs nicht im Hintergrund angezeigt, zumindest nicht in meinem xterm. Es macht jedoch die Unterschiede zwischen den Tabs und dem Space ein wenig aus.




Sie können die Subversion-Konfiguration ändern, um colordiff zu verwenden

~ / .subversion / config.diff

 ### Set diff-cmd to the absolute path of your 'diff' program.
 ###   This will override the compile-time default, which is to use
 ###   Subversion's internal diff implementation.
-# diff-cmd = diff_program (diff, gdiff, etc.)
+diff-cmd = colordiff

über: https://gist.github.com/westonruter/846524