在Emacs中用ediff比较文件时出错的解决方法(Searching for program: no such file or directory, diff)


A1.Emacs的ediff命令出错

基础环境:
1.操作系统:Windows 10 家庭版
2.软件版本:GNU Emacs 24.5.1 (i686-pc-mingw32)

 

操作步骤:
1.打开 Emacs 后,键入 M-x ediff 命令。
B1.输入ediff命令
备注:M-x 指的是同时按下 Alt 键和 x 键,之后在输入 ediff 。

2.根据提示输入第一个文件全名。
B2.输入A文件名
备注:输入的必须是完整路径和完整文件名(带后缀)。

3.根据提示输入第二个文件全名。
B3.输入B文件名
备注:输入比较的另一个文件。

 

问题现象:
C1.错误信息
在经过以上操作步骤后,且确定命令和文件名正确的情况下,显示 Searching for program: no such file or directory, diff 这段错误信息,意思是没有找到 diff 这个程序文件。

 

问题原因:
D1.问题原因
上图是更详细的 ediff 命令的运行记录,可以看到 Emacs 正确的读取了2个文件,并且准备比较它们,但这时候却没有找到执行比较的程序 diff 。

Emacs 的 ediff 命令需要调用比较文本文件的 diff 程序,在 linux 操作系统中,内置了 diff 程序,而 Windows 操作系统则没有,所以才会出现这个错误。

 

解决方法:
安装并正确配置 KDiff3 即可解决问题,它带有 diff 程序。

KDiff3 是一款用来比较文件和目录的工具软件,它可以同时比较2个或者3个文件、目录,并显示它们的差异。同时它支持 Linux、Windows、Mac OS等大部分操作系统,是一个跨平台的软件。

1.KDiff3 官方首页
E1.KDiff3官网
KDiff3 的网站地址是:http://sourceforge.net/projects/kdiff3/

2.下载 KDiff3
E2.下载KDiff3
在网页上点击红框所示的按钮下载 KDiff3 安装程序,需要注意的是黄线所标注的部分,代表这个是 KDiff 的64位安装程序。

如果你的系统是32位的,则需要下载32位的安装程序。点击蓝框圈起来的 Browse All Files 链接,进入 KDiff 的多版本列表页面。

3.下载 KDiff3 的其他版本
E3.下载KDiff3其他版本
点击红框中的 kdiff3 链接,进入详细的程序版本页面。

4.KDiff3 的版本列表
E4.KDiff3版本列表
版本号的数字越高,代表程序越新。点击红框中的 0.9.98 链接,这是现在最新的 KDiff3 程序。

5.下载 KDiff3 的32位版本
E5.KDiff3的32位版本
点击红框中的链接,就可以下载32位版本的 KDiff3 了。

6.开始下载 KDiff3
E6.开始下载KDiff3
等待5秒后,就会自动开始下载。如果没有自动下载,则点击 direct link 这个链接,手动下载。

7.正在下载 KDiff3
E7.正在下载KDiff3
如果你使用 chrome 浏览器,这时会显示如图所示的下载进度。

8.KDiff3 安装程序
E8.KDiff3安装程序
图中所示的就是 KDiff3 的安装程序,在上面的是32位的程序,下面的是64位的程序。参照自己的操作系统,选择安装。

9.KDiff3 许可证协议
E9.KDiff3许可证协议
运行 KDiff3 安装程序后,打开的第一个页面是许可证协议,点击 我接受 按钮继续安装。

10.选择要安装的 KDiff3 组件
E10.选择要安装的KDiff3组件
在 选择组件 页面我们只需关注 Integration 选项,点击它前面的 + 展开所有选项。

11.按需选择组件
E11.按需选择组件
KDiff3 会集成到列出的程序中,取消不想集成的程序。我只保留了 Explorer 和 Diff-Ext 。

12.选择 KDiff3 的安装目录
E12.选择KDiff3的安装目录
这时你可以选择将 KDiff3 安装到你想要的位置,尽量不安装到系统盘(C盘),可能会影响程序运行效率。

13.设置 KDiff3 的使用权限
E13.设置KDiff3的使用权限
页面中间唯一选项的意思是安装KDiff3后,所有用户都可以使用它,如果你和其他人共用一台电脑,并且各自持有账户,可以取消它。

14.选择创建快捷方式
E14.选择创建快捷方式
如果你不需要快捷方式,可以选择 不要创建快捷方式 选项。

15.KDiff3 正在安装
E15.KDiff3正在安装
KDiff3 正在安装到你的计算机,等待完成即可。

16.KDiff3 安装完成
E16.KDiff3安装完成
KDiff3 已经安装完成,勾上 运行KDiff3 ,并点击完成,即可运行 KDiff3 了。

17.KDiff3运行界面
E17.KDiff3运行界面
如图所示,出现这个界面就说明 KDiff3 已经正确安装,但这时 ediff 命令仍然会出错,因为还没有正确的进行配置。

18.复制 KDiff3 的 bin 目录路径
E18.KDiff3的bin目录路径
找到你安装 KDiff3 时的目录,并进入其中的 bin 目录,然后复制资源管理器显示的目录路径。

19.计算机图标
E19.计算机图标
在桌面上找到计算机图标,在 Windows 的各个版本中,名称是不一样的。Windows 10 中叫 此电脑,Windows 7、8 中叫 计算机,其他本版叫 我的电脑。

20.计算机右键菜单
E20.计算机右键菜单
右键单击计算机图标,在右键菜单中选择 属性 选项。

21.计算机基本信息窗口
E21.计算机基本信息窗口
点击红框中的 高级系统设置 链接,打开系统属性窗口。

22.系统属性窗口
E22.系统属性窗口
点击红框中的 环境变量 按钮,打开系统的环境变量窗口。

23.系统环境变量窗口
E23.系统环境变量窗口
在红框所示的区域中,找到 Path 这一项,先点击选中它,然后点击下面的 编辑 按钮,打开编辑窗口。

24.添加 KDiff3 的 bin 目录路径
E24.添加KDiff3的bin路径
将之前复制的 KDiff3 的 bin 目录路径,黏贴添加到变量值的最后,且用英文分号将我们新添的值和旧值隔离开,如图所示。

至此,已配置完成,可以重新在 Emacs 中测试一下 ediff 命令了

 

结果测试:
F1.ediff命令正常运行
如果一切顺利,应该出现上图所示画面,这代表我们已经解决了 ediff 命令不能使用的问题。

 

注意事项:
1.添加环境变量时,一定要用英文分号将旧值和新值隔离开。
2.安装 KDiff3 且配置完成后,需要重新启动 Emacs,使其重新载入环境变量。

 

参考资料:
1.Re: Searching for program: no such file or directory, diff
2.KDiff3 download | SourceForge.net

 

本文许可:
本文由 rsreland(瑞兰德) 编写,使用 RSReland Documentation License 许可证并遵循其内容,您的权利与义务详见 http://rsreland.net/licence 。

000webhost logo