有没有一种方法可以在不首先打开emacs并使用M-x和其他工具的情况下启动emacs merge?

有没有一种方法可以在不首先打开emacs并使用M-x和其他工具的情况下启动emacs merge?,emacs,Emacs,有时我想合并多对文件,假设我想合并fileA.old和fileA.new,以及fileB.old和fileB.new..等等。目前我必须打开emacs。执行M-x ediff合并文件并输入第一个文件的名称、返回键、第二个文件的名称、返回键..以及合并模式下的im…是否有方法以两个文件名作为参数启动emacs并在合并模式下着陆?您可以通过命令行将Lisp代码传递给emacs: emacs --eval '(ediff-merge-files "path/to/file1" "path/to/fil

有时我想合并多对文件,假设我想合并fileA.old和fileA.new,以及fileB.old和fileB.new..等等。目前我必须打开emacs。执行
M-x ediff合并文件
并输入第一个文件的名称、返回键、第二个文件的名称、返回键..以及合并模式下的im…是否有方法以两个文件名作为参数启动emacs并在合并模式下着陆?

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

emacs --eval '(ediff-merge-files "path/to/file1" "path/to/file2")'
当然,这可以封装在脚本中,以使调用更方便。例如,在bourne shell中,您可以执行以下简单版本:

#/垃圾箱/垃圾箱
#检查调用是否正确
如果[$#!=2];然后
echo“用法:$(基本名称“${0}”)
出口1
fi
#检查文件1是否存在且可读
如果[-f“${1}”];然后
如果[!-r“${1}”];然后
echo“无法打开“${1}”,访问被拒绝。”
出口3
fi
其他的
echo“未找到文件:“${1}”
出口2
fi
#检查文件2是否存在且可读
如果[-f“${2}”];然后
如果[!-r“${2}”];然后
echo“无法打开“${2}”,访问被拒绝。”
出口5
fi
其他的
echo“未找到文件:“${2}”
出口4
fi
#调用emacs
emacs--eval“(ediff合并文件\“${1}\”\“${2}\”)
如果将其保存在
$PATH
上的文件
ediff
中,则只需编写:

ediff file1 file2

在命令行上,Emacs将弹出两个给定的文件,它们处于
ediff模式

你是说
ediff合并文件
?太棒了,这使得使用--eval(eshell)甚至gdb启动eshell变得很方便,我需要尝试一下,谢谢!对于eshell,也可以尝试
-nw
在终端窗口内运行emacs,而不是打开新窗口。