这可能是一个经常重复的问题,但我找不到与搜索类似的东西。 关键是我喜欢将Emacs用于我的个人项目,通常是使用C或python的非常小的应用程序,但我想知道如何将它用于我的工作,我们的项目中包含大约10k的源代码文件,所以是veeeery大(实际上我使用源洞察,这是非常好的工具,但仅适用于Windows),问题是:
此外,如果您对此有任何经验并希望分享您的想法,我会认为它非常有趣。
溴
答案 0 :(得分:10)
导航C源文件的“传统”方式是使用“etags”创建一个名为TAGS的文件,然后使用ALT-。转到文件中的函数。
为了在文件中搜索字符串,我通常使用“grep”。您可以创建一个包含您要搜索的所有目录的shell脚本,或者如果您厌倦了每次都输入它们。
答案 1 :(得分:9)
我的项目通常使用git,因此我将它们放在一起以快速搜索它们:
;; There's something similar (but fancier) in vc-git.el: vc-git-grep
;; -I means don't search through binary files
(defcustom git-grep-switches "--extended-regexp -I -n --ignore-case"
"Switches to pass to `git grep'."
:type 'string)
(defun git-grep (command-args)
(interactive
(list (read-shell-command "Run git-grep (like this): "
(format "git grep %s -e "
git-grep-switches)
'git-grep-history)))
(let ((grep-use-null-device nil))
(grep command-args)))
答案 2 :(得分:6)
答案 3 :(得分:4)
关于整个项目中的搜索,我发现 rgrep 命令非常有用。
此外, imenu 非常方便跳转到同一档案中的功能定义。
这些是我的2p。
答案 4 :(得分:3)
从CEDET看EDE - 它为项目提供基础支持......
答案 5 :(得分:3)
欧洲央行对我的品味太重了。我用xcscope得到了很好的结果。毋庸置疑,它对Python没有多大帮助。
答案 6 :(得分:2)
除了像其他人提到的那样使用TAGS之外,我发现igrep
和igrep-find
非常有用。 Emacs还内置了grep
和grep-find
,但我发现它们的界面更加笨拙。
我的标准搜索是:
M-x igrep-find some_regexp RET ~/work_area/*.cxx
将查找*.cxx
下的所有~/work/area
个文件,并显示与some_regexp
匹配的结果。与所有搜索实用程序一样,它会填充类似编译的缓冲区,您可以使用 C-x` (又名 M-x next-error )进行导航。
答案 7 :(得分:2)