615 Stimmen

Einfärben von diff auf der Kommandozeile

Wie kann ich eine Diff. so einfärben, dass sie gut aussieht?

Ich möchte es für die Kommandozeile, also bitte keine GUI-Lösungen.

7 Stimmen

Ein bestimmtes Betriebssystem/Shell?

4 Stimmen

Versuchen Sie github.com/walles/riff . Als zusätzlicher Bonus wird hervorgehoben, welche Teile der Linien sich geändert haben.

0 Stimmen

Emacs macht großartige Farbunterschiede in einem Terminal; ist es das, was Sie mit nicht-GUI meinen? Siehe unix.stackexchange.com/a/613399/80268 .

0voto

Dr Neo Punkte 534

Meine Lieblingswahl ist vdiff <file1> <file2> Funktion (ich habe vergessen, woher ich sie habe).

Es öffnen sich zwei Fenster in Vim nebeneinander, um den Unterschied zwischen den beiden Dateien deutlich zu erkennen.

vdiff () {
    if [ "${#}" -ne 2 ] ; then
        echo "vdiff requires two arguments"
        echo "  comparing dirs:  vdiff dir_a dir_b"
        echo "  comparing files: vdiff file_a file_b"
        return 1
    fi

    local left="${1}"
    local right="${2}"

    if [ -d "${left}" ] && [ -d "${right}" ]; then
        vim +"DirDiff ${left} ${right}"
    else
        vim -d "${left}" "${right}"
    fi
}

Fügen Sie dieses Skript in Ihre (.alias) oder (.zshrc) ein, und rufen Sie es dann mit vdiff <Datei1> <Datei2>.

Exemple

Enter image description here

Die Ergebnisse sind:

Enter image description here

-2voto

Kais Tounsi Punkte 602

Für mich habe ich einige Lösungen gefunden: es ist eine funktionierende Lösung

Enter image description here

@echo off
Title a game for YouTube
explorer "https://thepythoncoding.blogspot.com/2020/11/how-to-echo-with-different-colors-in.html"
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)
echo say the name of the colors, don't read

call :ColorText 0a "blue"
call :ColorText 0C "green"
call :ColorText 0b "red"
echo(
call :ColorText 19 "yellow"
call :ColorText 2F "black"
call :ColorText 4e "white"

goto :Beginoffile

:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof

:Beginoffile

0 Stimmen

Obwohl das Tagging mit Unix 6 Jahre später erfolgte, kam diese Antwort für Windows 2 Jahre später.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X