Я хотел бы запустить emacs для редактирования файлов или каталогов. Например, я хотел бы что-то вроде:

emacs -f ediff-files file1 file2

Но когда я делаю это, он не принимает file1 и file2 в качестве двух файлов для сравнения. Скорее, Emacs запрашивает у меня разницу между файлами.

Кто-нибудь знает, как это сделать в одной командной строке?

1 ответ1

0

С учетом описания параметров командной строки из руководства Emacs:

'-f function' '--funcall = function' Вызвать функцию функции Lisp. Если это интерактивная функция (команда), она читает аргументы в интерактивном режиме так же, как если бы вы вызывали ту же функцию с последовательностью клавиш. В противном случае он вызывает функцию без аргументов.

это ожидается. Вместо этого вы можете попробовать использовать -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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .