Vergleichen von zwei Textdateien auf einem Windows-System


11

Da ediff-filesund ediff-buffersführen zu apply: Searching for program: no such file or directory, diffFehlern auf Windows-Computern.

Wie vergleiche ich zwei Dateien mit Emacs auf einem Windows-System?


1
Durch die Installation von GetGnuWin32 haben Sie Zugriff auf eine Menge Gnu-Software (diff, aber auch wget, sed…). Wenn Sie sich nur für Diff interessieren, können Sie mit gnu.org/software/diffutils
fredtantini

Die Fehlermeldung zeigt an, was falsch ist: Sie haben nicht diffinstalliert. Holen Sie sich Cygwin und versuchen Sie es erneut.
itsjeyd

@itsjeyd Cygwin ist bereits auf dem System installiert
Empty_Mind

@fredtantini Nach der Installation von GetGnuWin32 erhalte ich den gleichen Fehler
Empty_Mind

2
Ist es auf deinem Weg? Ich denke, das Verzeichnis sollte sich zumindest in der exec-pathVariablen befinden.
Fredtantini

Antworten:


8

Wie @nanny in den Kommentaren sagte, hat die Lösung Cygwin mit diffutils installiert. So geht's:

  1. Laden Sie Cygwin von seiner Homepage herunter .
  2. Installieren Sie Cygwin mit diffutils: A GNU collection of diff utilitiesPaket. Dieses Paket finden Sie im UtilsAbschnitt in einem der wenigen Schritte der Cygwin-Installation. Installation von Cygwin mit Diffutils
  3. Fügen Sie der Systemvariablen PATH Windows Cygwin-Verzeichnisse hinzu. Dies kann erfolgen durch:
    a) Hinzufügen einer eigenen CYGWIN-Variablen, um die Reihenfolge beizubehalten. Erstellen einer CYGWIN-Systemvariablen;;
    b) und Hinzufügen einer soeben erstellten Variablen zur System-PATH-Variablen.Hinzufügen der Variablen CYGWIN zur Systemvariablen PATH

Danach sind Sie in der Lage zu nennen ediff-buffers, ediff-fileserfolgreich und andere. Welches sieht ungefähr so ​​aus:Laufen Ediff

Genießen!


3

Wenn Sie Git für Windows installiert haben, reicht es aus, es hinzuzufügen

C:\Program Files\Git\usr\bin\

zu Ihrem PATH, da er bereits mit einer ausführbaren Diff-Datei geliefert wird und in diesem Ordner installiert wird.


2

Dies kann Menschen Zeit sparen, daher werde ich hier antworten. Wenn Sie das Cygwin- binVerzeichnis nicht zu Ihrem Pfad hinzufügen möchten (oder zu einem der anderen in den anderen Antworten vorgeschlagenen), können Sie den Pfad des von ediff verwendeten Programms festlegen, indem Sie die Variable festlegen ediff-diff-program. Zum Beispiel könnten Sie es auf C:\cygwin\bin(oder was auch immer der tatsächliche Pfad in Ihrem Fall ist) setzen, wenn Sie cygwin verwenden. Ich habe einige Zeit gebraucht, um herauszufinden, welche Variable gesetzt werden soll. Einige, die NICHT funktionierten, waren: ediff-custom-diff-programund diff-command.

Beispielsweise:

(setq ediff-diff-program "c:/CYGWIN64/bin/diff.exe")

macht es.


IIRC, Sie können keine Cygwin-Binärdateien außerhalb der Shell aufrufen, da einige Bibliotheken nicht geladen werden können. Ich denke, dies wird nur funktionieren, wenn Emacs von Cygwin ausgeführt wird, für das die PATHVariable korrekt eingestellt sein sollte. Korrigiere mich, wenn ich falsch liege.
DoMiNeLa10

1
@ DoMiNeLa10 Ich habe es auf einem Windows 10-Computer mit Emacs 26.1 getestet, indem ich Emacs über die Taskleiste gestartet habe, ohne etwas über Cygwin zu wissen ... funktioniert einwandfrei. Darüber hinaus würde die Lösung, die es dem Pfad hinzufügt, dasselbe Problem haben, das Sie beschreiben, wenn es wirklich ein Problem wäre.
Sturgman

1
Es tut mir leid, der letzte Teil meines Kommentars ist falsch. Das Hinzufügen zum Pfad hätte nicht das gleiche Problem, das Sie vorschlagen, da es die Bibliotheken finden könnte. Trotzdem habe ich den Ansatz in der Antwort getestet und er funktioniert gut.
Sturgman

0

Wenn Sie kein Diff erstellen müssen, sondern nur die Unterschiede zwischen den Dateien ermitteln möchten, können Sie dies M-x compare-windowsstattdessen verwenden.

Öffnen Sie die beiden Dateien so, dass Sie beide gleichzeitig sehen, verschieben Sie den Punkt in beiden Puffern zum Anfang und führen Sie ihn aus M-x compare-windows. Es wird an die erste Stelle verschoben, an der sich die Dateien unterscheiden. Dies sollte ohne externe ausführbare Datei funktionieren.


1
Dies stoppt den Punkt vor dem ersten unterschiedlichen Zeichen in beiden Dateien.
Empty_Mind

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.