【问题标题】:Grep failing with Emacs (windows), and GnuWin32 GrepGrep 在 Emacs (windows) 和 GnuWin32 Grep 中失败
【发布时间】:2010-02-24 17:33:47
【问题描述】:

我已经下载并安装了 GnuWin32 工具,并将 grep 可执行文件添加到 Emacs bin。我也将 GnuWin32 bin 文件夹添加到我的 Path 变量中。

问题是,当我尝试使用建议的 grep 命令运行时,我总是得到:

Grep exited abnormally with code 53 at Wed Feb 24 17:16:12

在我的一生中,我在任何地方都找不到任何对错误代码 53 的引用! :(

我已经在许多网站上尝试了确切的示例,例如,当我输入时:

M-x grep <ret>

它想出了

Run grep (like this): grep -n 

这很好,但我不知道它需要什么参数。我在一些教程中尝试了一些,但我再次收到错误代码 53!

我尝试过的其中一件事是直接来自 emacs wiki (http://www.emacswiki.org/emacs/GrepMode#toc2)(但可能不适用于 windows 版本?)它说试试这个命令:

M-x grep -n -e setq ~/.emacs

我试过了,我得到了:

-*- mode: grep; default-directory: "c:/[My Directory]/" -*-
Grep started at Wed Feb 24 17:30:47

grep -n -e setq ~/.emacs NUL

Grep exited abnormally with code 53 at Wed Feb 24 17:30:47

这令人沮丧,因为这是 Emacs 的一个强大功能,我真的很想学习它,因为我听说过它的好消息!

任何帮助将不胜感激! :)

安迪

更新

根据下面的建议,我已经通过命令行进行了尝试,它似乎工作正常,也许我缺少一些配置?

更新

我发现命令 M-x Occur 似乎和我想象的 grep 一样。如果我不能让它工作,使用 grep over 会有很多额外的好处吗?

【问题讨论】:

  • 对第二次更新的响应:M-x occur 通常只在单个打开的缓冲区中搜索,而 M-x grep 搜索多个文件 - 非常有用。
  • 如果 grep 不起作用,您可能想尝试 M-x multi-occur。它搜索打开的缓冲区。与 grep 不完全一样,但至少它是某种东西。
  • 谢谢,这可能有用! :) 还没有得到它的工作,但没有更多的时间来玩它!

标签: emacs grep search


【解决方案1】:

53 的退出代码可能是操作系统退出代码,而不是 grep 特定的退出代码。对于 Windows,这将是“找不到网络路径”。您是否通过网络路径执行任何操作? grep 是否需要缺少任何 dll?可以在命令行成功运行grep吗?

【讨论】:

  • 您好,感谢您的建议!我没有通过网络做任何事情,所以我不确定这是否是问题所在。刚刚启动 cmd,它似乎工作正常(至少没有错误代码 53)。我仍然不确定命令语法,但我尝试了 grep -n [regex] [file] ,它似乎返回了搜索结果。那么为什么不使用 Emacs!呜呜呜!!! :)
  • 你能检查一下你使用的是什么版本的 emacs 和 grep(grep --version 从命令行)。
  • 我正在使用 GNU grep 2.5.4 和 emacs 23.1。我假设它们是较晚的(如果不是最新的)版本,因为我大约一周前才下载了它。谢谢!
  • 抱歉,有关 emacs 的更多信息:GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600)
  • 我不会将可执行文件复制到 emacs 目录。只需将目录放在系统路径上,并确保当 emacs 启动时,它使用该系统路径。
【解决方案2】:

我遇到了类似的问题,以下对我有用。

  1. 转到 Windows 控制台
  2. 输入命令“set”调出系统变量
  3. 我有 shell=c:\progra~1\rational\ration~1\nutcroot\mksnt\sh.exe
  4. 输入“set shell=”删除变量
  5. 再次尝试 Emacs

祝你好运!

【讨论】:

  • 嘿,谢谢你的提示,但我很久以前就放弃了 Emacs,学习曲线太陡峭,我无法从中得到什么,我最终改用 Notepad++! :) ..所以不幸的是我无法测试它!安迪
【解决方案3】:

下载dependencies zip file并将libiconv2.dlllibintl3.dllpcre3.dllregex2.dll复制到Emacs的bin目录。

grep.exefind.exe 复制到Emacs 自己的bin 目录。然后,Emacs 将在任何其他同名的可执行文件上使用这些文件,包括 Windows 自己的 find 实用程序。

注意:如果你不使用安装程序,你需要同时下载dependencies zip file并将libiconv2.dlllibintl3.dllpcre3.dllregex2.dll复制到Emacs ' bin 目录,否则您可能会收到“异常退出,代码为 53”的错误消息。

EmacsWiki: Grep Mode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2021-03-03
    • 2017-01-08
    • 2011-07-10
    相关资源
    最近更新 更多