如何让grep在Windows上的Emacs中工作(EmacsW32)

Yoo*_*Yoo 9 windows emacs grep emacsw32

Mx grep,Mx lgrep,Mx rgrep对我来说在EmacsW32中不起作用.

我做Mx lgrep,它说grep不是命令:

grep -i -n "hello" * NUL
'grep' is not recognized as an internal or external command,
operable program or batch file.

Grep finished with no matches found at Sun Jan 31 05:59:06
Run Code Online (Sandbox Code Playgroud)

还有什么是NUL的东西?EmacsW32主页说它附带了Gnuwin32实用程序,但似乎配置实际使用Gnuwin32 grep的工作留给了用户.

如何配置它以使用随附的Gnuwin32 grep或cygwin grep?都好吗?

Dmi*_*try 5

Windows没有grep实用程序(事实上它确实有findstr,但它不完全相同),所以你需要为windows安装类似cygwinunix utils的东西.安装后,您需要将它们添加到%PATH%,以便Windows知道在哪里查找它们.你可以做到这一点无论是在运行命令行cmd.exe并发出命令set PATH=<your_path>;%PATH%,或在一些设置寡妇通过右键单击得到我的电脑图标(被称为类似的环境变量 这里是它的一些图片).

注意,windows有一个被调用的实用程序find,它也在系统中%PATH%,可以使某些命令(如M-x grep-find)无法正常工作,所以将unix-find放在你的第一个是很重要的%PATH%.

  • 如果您已经安装了 Windows 版 Git,请将以下内容添加到 PATH 的末尾:C:\Program Files\Git\usr\bin (3认同)

Tom*_*lis 5

这篇文章有一些关于如何让它工作的提示。

前几天我让它工作了,你可以在 emacs 中设置 PATH 环境变量,如果你安装了 cygwin 和/或 gnuw32,只需设置这些的路径。这是我的 .emacs 中的一个片段,仅适用于 Windows。我将变量(cygwin-bin、gnu-bin)设置为安装程序的路径。然后建立通向这些的路径。一个缺点是它吹走了我的其余路径。到目前为止,这还不是问题,但如果我对 LISP 更聪明,我可能会想出一些办法。无论如何,希望这会有所帮助。

;;windows only stuff

(when (string-equal system-type "windows-nt")

(progn

(setq cygwin-bin "c:\\apps\\cygwin\\bin")

(setq gnu-bin "C:\\apps\\GnuWin32\\gnuwin32\\bin")

(setenv "PATH"

(concat cygwin-bin ";" gnu-bin ";"))

(setq exec-path

'(cygwin-bin gnu-bin)))) 
Run Code Online (Sandbox Code Playgroud)

我应该补充一点,我得到这个解决方案是因为将 qnuwin32 放在 windows 中的路径前面似乎是一个冒险的提议,你冒着搞乱机器上其他程序的风险。所以这似乎是一个很好的妥协。