我有时想合并多对文件,假设我要合并fileA.old和fileA.new,以及fileB.old和fileB.new ..等等。目前我必须打开emacs。执行M-x ediff-merge-files
并输入第一个文件的名称,返回键,第二个文件的名称,返回键......以及在合并模式下...有没有办法启动带有两个文件名作为参数的emacs并在合并中登陆模式?
答案 0 :(得分: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
的{{1}}文件中,则只需写下:
$PATH
命令行上的和Emacs将弹出ediff file1 file2
中的两个给定文件。