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?都好吗?
Windows没有grep实用程序(事实上它确实有findstr,但它不完全相同),所以你需要为windows安装类似cygwin或unix utils的东西.安装后,您需要将它们添加到%PATH%,以便Windows知道在哪里查找它们.你可以做到这一点无论是在运行命令行cmd.exe并发出命令set PATH=<your_path>;%PATH%,或在一些设置寡妇通过右键单击得到我的电脑图标(被称为类似的环境变量 这里是它的一些图片).
注意,windows有一个被调用的实用程序find,它也在系统中%PATH%,可以使某些命令(如M-x grep-find)无法正常工作,所以将unix-find放在你的第一个是很重要的%PATH%.
这篇文章有一些关于如何让它工作的提示。
前几天我让它工作了,你可以在 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 中的路径前面似乎是一个冒险的提议,你冒着搞乱机器上其他程序的风险。所以这似乎是一个很好的妥协。