将Emacs用于大型项目

时间:2010-04-02 12:30:54

标签: search emacs editor project

这可能是一个经常重复的问题,但我找不到与搜索类似的东西。 关键是我喜欢将Emacs用于我的个人项目,通常是使用C或python的非常小的应用程序,但我想知道如何将它用于我的工作,我们的项目中包含大约10k的源代码文件,所以是veeeery大(实际上我使用源洞察,这是非常好的工具,但仅适用于Windows),问题是:

  • 搜索:在整个项目中搜索字符串最方便的方法是什么?
  • 浏览函数:我的意思是将光标放在函数上,定义,var,然后转到定义
  • 重构

此外,如果您对此有任何经验并希望分享您的想法,我会认为它非常有趣。

8 个答案:

答案 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)

还有Emacs代码浏览器。它使探索项目变得更加简单。有关详细信息,请参阅herehere

答案 3 :(得分:4)

关于整个项目中的搜索,我发现 rgrep 命令非常有用。

此外, imenu 非常方便跳转到同一档案中的功能定义。

这些是我的2p。

答案 4 :(得分:3)

从CEDET看EDE - 它为项目提供基础支持......

答案 5 :(得分:3)

欧洲央行对我的品味太重了。我用xcscope得到了很好的结果。毋庸置疑,它对Python没有多大帮助。

http://www.emacswiki.org/emacs/CScopeAndEmacs

答案 6 :(得分:2)

除了像其他人提到的那样使用TAGS之外,我发现igrepigrep-find非常有用。 Emacs还内置了grepgrep-find,但我发现它们的界面更加笨拙。

我的标准搜索是:

M-x igrep-find some_regexp RET ~/work_area/*.cxx

将查找*.cxx下的所有~/work/area个文件,并显示与some_regexp匹配的结果。与所有搜索实用程序一样,它会填充类似编译的缓冲区,您可以使用 C-x` (又名 M-x next-error )进行导航。

答案 7 :(得分:2)

Icicles可以通过多种方式为 projects 提供帮助。同样,Bookmark+甚至Dired+

这些库可以帮助您创建,组织和管理项目,无论文件和目录位于何处。它们可以帮助您以各种方式导航和搜索。

某些功能是独一无二的 - 与其他方法完全不同。我可以在这里列出一些项目支持,但这是start的最佳位置。