2

我有时想合并多对文件,假设我想合并fileA.old和fileA.new,以及fileB.old和fileB.new..等等。目前我必须打开emacs。输入第一个文件的名称,返回键,第二个文件的名称,返回键..并在合并模式下输入...有没有M-x ediff-merge-files办法以文件名作为参数启动 emacs 并进入合并模式?

4

1 回答 1

3

您可以通过命令行将 Lisp 代码传递给 Emacs:

emacs --eval '(ediff-merge-files "path/to/file1" "path/to/file2")'

当然,这可以包装在脚本中,以便更方便地调用。例如,在 bourne shell 中,您可以执行如下简单版本:

#!/bin/sh

# check correct invocation
if [ $# != 2 ]; then
   echo "USAGE: $(basename "${0}") <file1> <file2>"
   exit 1
fi

# check that file1 exists and is readable
if [ -f "${1}" ]; then
    if [ ! -r "${1}" ]; then
        echo "Cannot open '${1}', access denied."
        exit 3
    fi
else
    echo "File not found: '${1}'"
    exit 2
fi

# check that file2 exists and is readable
if [ -f "${2}" ]; then
    if [ ! -r "${2}" ]; then
        echo "Cannot open '${2}', access denied."
        exit 5
    fi
else
    echo "File not found: '${2}'"
    exit 4
fi

# invoke emacs
emacs --eval "(ediff-merge-files \"${1}\" \"${2}\")"

如果你把它保存在ediff你的文件中$PATH,你可以简单地写:

ediff file1 file2

在命令行上,Emacs 会弹出两个给定的文件ediff-mode

于 2012-11-09T22:45:13.593 回答