我试图列出包含函数的所有文件,例如matrixCal
.
我怎样才能在Linux中做到这一点?
答案1
grep 可以吗?
grep -R matrixCal /location/of/your/code
答案2
您可能对该计划感兴趣ack
。它专门用于搜索源代码目录并以易于阅读的格式返回有用的内容。基本上它做同样的事情,grep
但格式更友好。
答案3
传统方法是为源代码创建函数和变量定义的索引,并使用编辑器搜索该索引。传统的索引命令称为ctags
并创建一个名为 的文件tags
,可以在 vi 中使用。 Emacs 自带了类似的etags
命令(该文件名为TAGS
)。
例如,对于 C 源代码树,您可以通过以下方式TAGS
为 Emacs 生成文件:
find -type f -name '*.[hc]' -exec etags {} +
对于在 Subversion 下签出的大型源代码树,这里有两个改进:忽略.svn
目录,并处理文件层次结构太长以致超出命令行长度限制(导致文件被截断,因为每次连续调用etags
都会重写从头开始文件)。
: >TAGS
find -type d -name .svn -prune -o \
-type f -name '*.[hc]' -exec etags -a {} +
然后,在 Emacs 中运行M-x visit-tags-table
一次并选择TAGS
文件。将光标放在单词 上matrixCal
,然后按M-.
( find-tag
) 跳转到定义(如有必要,打开包含定义的文件)。要在出现的情况之间进行迭代,请运行M-x tags-search
,输入^matrixCal$
转到一个出现的位置,然后使用M-,
( tags-loop-continue
) 跳转到下一个出现的位置。在TAGS
缓冲区中,M-x occur RET matrixCal RET
将为您提供符号使用位置的概述。