Ich bin mir ziemlich sicher, dass es andere Lösungen gibt, aber Sie können dies --eval
anstelle von -f
( --funcall
) tun :
emacs --eval '(ediff-files "file1" "file2")'
In der Tat, die Emacs - Handbuch auf „Befehlszeilenargumente für Emacs Invocation“ sagt , dass -f function
und--funcall function
Rufen Sie die Lisp- Funktion auf . Wenn es sich um eine interaktive Funktion (einen Befehl) handelt, werden die Argumente interaktiv gelesen, als hätten Sie dieselbe Funktion mit einer Tastenfolge aufgerufen. Andernfalls wird die Funktion ohne Argumente aufgerufen.
Dies erklärt, warum Sie mit -f
/ nicht das gewünschte Verhalten erzielen können --funcall
.
ediff-directories
nimmt drei Argumente an, daher ändert sich der oben gezeigte Befehl in
emacs --eval '(ediff-directories "dir1" "dir2" "regexp")'
Wie hier erläutert , ediff-directories
wird Emacs eingegeben ediff-meta-mode
, sodass Sie zuerst im "Ediff Session Group Panel" angezeigt werden. Aus dem Ediff-Handbuch zu Sitzungsgruppen :
Mehrere wichtige Einträge von Ediff führen Vergleiche und Zusammenführungen in Verzeichnissen durch. Bei der Eingabe ediff-directories
wird ediff-directories3
[...] dem Benutzer ein Dired-ähnlicher Puffer angezeigt, in dem die für die beteiligten Verzeichnisse gemeinsamen Dateien zusammen mit ihrer Größe aufgelistet sind. [...] Wir nennen diesen Puffer Sitzungsgruppenbereich, da alle Ediff-Sitzungen, die den aufgelisteten Dateien zugeordnet sind, diesen Puffer als gemeinsamen Schwerpunkt haben. [...]
Beim Verzeichnisvergleich oder beim Zusammenführen werden in einem Sitzungsgruppenfenster nur die Dateien angezeigt, die allen beteiligten Verzeichnissen gemeinsam sind. Die Unterschiede werden in einem separaten Verzeichnisdifferenzpuffer gespeichert und bequem durch Eingabe Din das entsprechende Sitzungsgruppenfenster angezeigt . [...]
Um den tatsächlichen Unterschied anzuzeigen, drücken Sie einfach D( ediff-show-dir-diffs
).