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
那又是什么东西? EmacsW32主页说它附带Gnuwin32实用程序,但似乎configuration实际使用Gnuwin32 grep的工作留给用户。
我如何configuration它使用运送的Gnuwin32 grep或cygwin grep? 都好吗?
这篇文章有一些关于如何得到这个工作的提示。
前些天我得到了这个工作,你可以在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))))
我应该补充一点,我到了这个解决方案,因为把qnuwin32放在windows的路径前面似乎是一个冒险的命题,你冒着在你的机器上搞乱其他程序的风险。 所以这似乎是一个很好的妥协。
Windows没有带有一个grep
工具(事实上它有findstr
,但它不完全一样),所以你需要安装类似cygwin或unix utils for windows 。 安装完这些之后,需要将它们添加到%PATH%
,以便Windows知道在哪里查找它们。 您可以通过运行cmd.exe
并发出命令set PATH=<your_path>;%PATH%
或在某些设置窗口中通过右键单击“ 我的电脑”图标(称为“ 环境变量”它的图片)。
注意,windows有一个名为find
的实用程序,它也在系统%PATH%
,可以使某些命令(如Mx grep-find
)无法正确工作,所以重要的是将unix-find首先放入%PATH%
。
我认为EmacsW32用户首先需要通过菜单Options > Customize EmacsW32
来设置用户选项w32shell-shell
,它最初设置为none,用户应该将其设置为cmd或者cygwin。 将其设置为cmd意味着Mx grep将使用内置的Gnuwin32 grep(和cmd.exe作为外壳程序),如果设置保存正确,dotemacs将包含以下行:
(custom-set-variables ... '(w32shell-shell (quote cmd)) ...)
自定义变量表单应尽可能靠近dotemacs的开头。
出于某种原因,在我的系统中,这是不够的,Mx grep将坚持使用“grep -n”作为它的模板而不是“grep -nH -e”,它总是附加“NUL”。 在这种情况下,在dotemacs文件中添加以下行。
(grep-compute-defaults)
这是一个毫无意义的答案:
http://groups.google.com/group/gnu.emacs.help/browse_thread/thread/39cd9d63b07a9988#
请享用!
我使用Cygwin(旧版本)。 对于Emacs,我使用库cygwin-mount.el和setup-cygwin.el ,按照这个顺序加载。 工作得很好。