我想启动 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