如何在目录下的c文件中搜索文本
我浏览了几个类似的问题,但要么我不明白他们的答案,要么我的问题与他们的不同。所以,我有一个项目包含许多子目录和不同类型的文件。我只想在这些 .C 文件中搜索函数名称。
网上的一些信息建议使用“Esc x dired-do-query-replace-regexp”。但是,这不仅会搜索 C 文件,还会搜索其他文件,例如 .elf,这对我的情况没有帮助。其他人建议使用TAG功能,但这需要我为每个子目录键入“etags *.c”,这也是不可能的。
在从事那些大型软件项目时我应该如何做到这一点?
谢谢 李
I've looked through several similar questions, but either I didn't understand their answer or my question is different than theirs. So, I have a project contains many subdirecties and different type of files. I would like to search a function name among those .C files only.
Some information on the web suggest to use "Esc x dired-do-query-replace-regexp". However, this will search not just C files, but also other file like .elf which isn't helpfule in my case. Other people sugget to use TAG function, but it will require me to type "etags *.c" for every subdirectory which is also impossible.
How should I do this while working on those large scale software project?
Thanks
Lee
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
在 Linux 上使用 ack-grep
Use ack-grep on linux
我最喜欢的:
igrep-find
,在包 中找到igrep.el。用法是:有内置的
grep-find
,文档 这里,但是我觉得用起来很别扭。有关更一般的答案,请参阅类似的问题: Using Emacs For Big Big项目。
My favorite:
igrep-find
, found in the package igrep.el. Usage is:There's the built in
grep-find
, docs here, but I find it awkward to use.For a more general answer, see this similar question: Using Emacs For Big Big Projects.
如果您使用的是 Linux,则可以使用 grep 查找包含特定文本的文件。然后,您可以在 emacs 之外的 shell/命令提示符中执行此操作。这是一个很好的语法:
要搜索的目录可以相对指定,因此如果您位于要用作递归搜索的根目录的目录中,则可以跳过整个目录地址并指定一个点。
--color=auto 部分使一些文本突出显示。 --include=*.c 是指定要搜索的文件的部分。 在这种情况下,仅包含带有 c 扩展名的文件。 标志 i 使内容不区分大小写,标志 R 使搜索递归,标志 n 将行号添加到报告中,标志 H将文件路径添加到报告中。
if you're on linux, you can use grep to find files with a certain text in them. you would then do this outside of emacs, in your shell/command prompt. here's a nice syntax:
the directory to search can be specified relative, so if you're in the directory you want to use as the root directory for your recursive search, you can just skip the whole directory address and specify a single dot.
the part --color=auto makes some text highlighted. --include=*.c is the part that specifies what files to search. in this case, only files with the c-extension. the flag i makes stuff case insensitive, the flag R makes the search recursive, the flag n adds the line number to the report, and the flag H adds the file path to the report.
为了培育 find 和 grep ,有 find-grep 函数,您可以将调用字符串更改为
find 。 -name *.c
等。如果您愿意,请将其设为一个函数。然后你使用例如。 Cx` 等人。导航结果。要在一个目录中的文件中进行搜索,我使用 lgrep,它会提示您要搜索哪些文件。
To breed find and grep there is find-grep function, there you can change the invocation string to
find . -name *.c
etc. Make it a function, if You like. Then You use eg. C-x` et al. to navigate the results.To search among the files in one directory i use lgrep, it prompts you in which files to search.
您可以使用 cscope 和 xcscope.el : http://www.emacswiki.org/emacs/CScopeAndEmacs
You can use cscope and xcscope.el : http://www.emacswiki.org/emacs/CScopeAndEmacs
尝试使用dired:将光标放在要搜索的目录名称上,键入A,然后在迷你缓冲区中查找要查找的文本。
Try with dired: place the cursor on the directory name to search, type A and in the minibuffer the text to find.