如何让查询工作在软件,在Windows(EmacsW32)
题
M-x查询,M-x lgrep,M-x rgrep不工作EmacsW32我。
我做M-x lgrep和它所说的查询不是一个命令:
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
还有那是什么NUL的事情吗?EmacsW32主页说,它的船只与Gnuwin32公用事业,但它似乎工作的配置来实际使用的Gnuwin32查询是留给用户。
我怎么能配置,以使用的运Gnuwin32查询或cygwin查询?都好吗?
解决方案
这篇文章对如何得到这个工作的一些技巧。
我得到这个工作了一天,您可以设置在Emacs PATH环境变量,如果你有Cygwin和/或gnuw32装只需设置路径的。这是从我的.emacs片段这适用于仅适用于Windows。我(的cygwin斌,GNU斌)设置为变量到安装程序的路径。然后建立路径的。一个缺点是它吹走了我的路径的其余部分。这已经不是问题,到目前为止,但如果我是聪明与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))))
我要补充,我来到这个解决方案,因为把qnuwin32在Windows路径前面似乎是一个危险的命题,你运行你的机器上搞乱其他程序的风险。因此,这似乎是一个很好的妥协。
其他提示
Windows不拿出一个grep
实用程序(事实上它确实有findstr
,但它是不完全一样),所以你需要安装类似的 cygwin的或 UNIX utils的窗户的。安装这些之后,你需要将它们添加到%PATH%
,以便Windows将知道去哪里寻找他们。你可以做到这一点无论是在命令行中运行cmd.exe
并发出命令set PATH=<your_path>;%PATH%
或在一些设置寡妇你右击一个获得的我的电脑的图标(被称为类似的环境变量的这里是它的一些图片)。
请注意,Windows有一个工具叫find
,它也是在系统%PATH%
,可以使某些命令(如M-x grep-find
)无法正常工作,所以你把第一个UNIX的找到你%PATH%
重要。
我认为EmacsW32用户首先需要通过菜单w32shell-shell
,其被设置为无最初设置用户选项Options > Customize EmacsW32
,并且用户应该将其设置为CMD或cygwin的。将其设置为CMD装置M-X的grep将使用内置的GnuWin32 grep的(和cmd.exe的作为壳),并且如果设置被正确保存,则dotemacs将包含行如下所示:
(custom-set-variables
...
'(w32shell-shell (quote cmd))
...)
在定制设定变量形式应放在尽可能靠近dotemacs尽可能的开始。
出于某种原因,在我的系统,这是不够的,M-X的grep会坚持使用的“grep -n”作为自己的模板,而不是“grep的-nH -e”,它总是附加“NUL”。在这种情况下,在dotemacs文件中添加下列行。
(grep-compute-defaults)
我用Cygwin(旧版本)。用Emacs我用图书馆 cygwin-山。el 和 建立cygwin。el, ,载的顺序。工作只是罚款。