当前位置:  开发笔记 > 编程语言 > 正文

Emacs中的lgrep和rgrep

如何解决《Emacs中的lgrep和rgrep》经验,为你挑选了3个好方法。

我遇到了Emacs中的greps问题.

a)grep似乎不理解.[ch]用于搜索.c和.h文件.这是Emacs使用lgrep命令提供的默认选项.该示例是在.c/.h文件中搜索"global"一词.

grep -i -nH "global" *.[ch]
grep: *.[ch]: No such file or directory

Grep exited abnormally with code 2 at Mon Feb 16 19:34:36

这种格式无效吗?

b)使用rgrep我收到以下错误:

find . "(" -path "*/CVS" -o -path "*/.svn" -o -path "*/{arch}" -o -path "*/.hg" -o -path "*/_darcs" -o -path "*/.git" -o -path "*/.bzr" ")" -prune -o  -type f "(" -iname "*.[ch]" ")" -print0 | xargs -0 -e grep -i -nH "global"
FIND: Wrong parameter format

Grep finished (matches found) at Mon Feb 16 19:37:10

我在Windows XP上使用Emacs 22.3.1和GNU W32 Utils(grep,find,xargs等).Grep v2.5.3并找到v4.2.20.

我错过了什么?

更新:

太糟糕了,不能接受多个答案......因为我的问题的解决方案已经散布开来.

grep -i -nH "global" *.c *.h

这解决了第一个问题.谢谢luapyad!

(setq find-program "c:\\path\\to\\gnuw32\\find.exe")

emacs确实使用了Windows find.exe.强制gnu32找到修复了第二个问题.谢谢scottfrazer.

但是,我仍然喜欢ack.



1> 小智..:

我发现使用:

(setq find-program "\"C:/path/to/GnuWin32/bin/find.exe\"")
(setq grep-program "\"C:/path/to/GnuWin32/bin/grep.exe\"")

在窗户中工作得更好,因为你可以在路径周围放置一个空间并最终搞砸.

注意我在我的.emacs文件中使用了两个程序.

希望对其他有需要的程序员有所帮助;)



2> scottfrazer..:

对于a)看起来当前目录中根本没有.c或.h文件.

对于b)Windows试图使用自己的find而不是GNU W32 Utils中的find.尝试:

(setq find-program "c:\\path\\to\\gnuw32\\find.exe")



3> elmarco..:

好吧,总有Ack和Ack.el

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有