从命令行使用 ediff-files(ediff-directories 的)启动 emacs

从命令行使用 ediff-files(ediff-directories 的)启动 emacs

我想启动 emacs 来 ediff 文件或目录。例如,我想要类似这样的内容:

emacs -f ediff-files file1 file2

但是当我这样做时,它不会将 file1 和 file2 作为要比较的两个文件。相反,emacs 会提示我输入要比较的文件。

有人知道如何在一个命令行中执行此操作吗?

答案1

给出命令行选项描述Emacs 手册

'-f function' '--funcall=function' 调用 Lisp 函数 function。如果它是一个交互式函数(命令),它会以交互方式读取参数,就像您使用键序列调用相同的函数一样。否则,它将调用不带参数的函数。

这是预料之中的。您可以尝试使用-e

'--eval=expression' '--execute=expression' 评估 Lisp 表达式。

你可能需要这样的东西:

emacs --eval '(ediff-files "file1" "file2")'

检查一下这个看起来像是一个你可以使用的现成脚本的东西:

Ediff 模式手册页上显示了一种替代方法:

添加一个命令行开关-diff

(defun command-line-diff (switch)
  (let ((file1 (pop command-line-args-left))
        (file2 (pop command-line-args-left)))
    (ediff file1 file2)))

(add-to-list 'command-switch-alist '("diff" . command-line-diff))

;; Usage: emacs -diff file1 file2

相关内容