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