2008年12月5日星期五

emacs 文件搜索

一直都傻了, 通常用cscope 定位函数 类, 虽然写了生成cscope.files 的脚本, 但是必须按时执行才可以生成,在bsd 下可以通过 crontab 定期生成,但在windows下总要手动执行 烦不胜烦. 看来用grep 貌似是一个好的解决方案

转自:http://kyle.bloghome.cn/posts/181213.html

当偶厌倦了各个tag搜索工具的时候,发现grep才是偶的最爱。每每M-x grep RET输入一堆东西,才可以搜索到自己心仪的东东,确实麻烦。下面介绍下,在emacs中,各种grep相关的设置。如何可以让一位C++程序员比较方便的使用。

  • 基础命令设置

首先进入 Customize Group Grep 分组中,

名称数值说明
Grep Window Height14可以调整grep结果窗口的大小
Grep Commandgrep -rinH -e ../*设置grep的默认命令,使其默认从上一层目录开始递归搜索
Grep Find Commandfind ../* -iname "*.cpp" -type f -print0 | xargs -0 -e grep -nH -e从上一层目录开始递归搜索,所有cpp文件的内容,常用于搜索代码中被引用的变量或者函数
  • 高级命令用法

上面的只是一些雕虫小技。其实更好用的grep命令有如下几个。

命令使用简介特色说明
rgrepM-x rgrep RET后,首先输入的是需要搜索的内容,回车后,提示目标文件的类型,此时可以输入各个别名,比如ch,搜索所有的C++源码文件,随后输入的是搜索开始的目录。递归搜索目录中的内容,支持一些预定义的别名,比如ch表示所有的c++代码文件,hh表示所有的c++头文件等等。这个估计是写程序时,最好用的grep命令。
lgrepM-x lgrep RET后,提示内容与rgrep的都一样,唯一不同的是,lgrep只搜索当前指定目录中的内容,不会对子目录进行递归搜索。lgrep中的l应该是表示本层目录的(local)。对于在很大的,有很多子目录的文件夹中,只想搜索限定目录中,限定文件类型的时候,这个命令很方便。
igrepM-x igrep后,会自动根据当前所在文件的扩展名作为文件过滤条件(也可以修改),随后,会弹出UI提示选择目录(貌似在win32上,没有什么作用),一路回车,就可以搜索了。

没有评论: