刚从Eclipse转到Emacs,在Eclipse有一个非常方面的功能就是可以输入文件名访问项目的任何一个文件(快捷键为Ctrl+Shift+R),非常方便;
于是网上搜索,发现神的编辑器使用一个插件也可以实现同样的功能,并且还支持全项目关键词搜索。
插件的名字叫:Projectile
项目主页:https://github.com/bbatsov/projectile
1、安装
到项目主页下载或者直接到这里下载,我把projectile依赖的插件放在一起,
下载地址:http://download.csdn.net/detail/bbeikke/5115639
解压缩下载的文件,假设你解压目录是 D:\emacs_home\emacs_plugin\projectile_custom_v1
在.emacs文件中加入如下配置
(add-to-list 'load-path "D:\emacs_home\emacs_plugin\projectile_custom_v1")
(require 'projectile)
;; 默认全局使用
(projectile-global-mode)
;; 默认打开缓存
(setq projectile-enable-caching t)
;; 使用f5键打开默认文件搜索
(global-set-key [f5] 'projectile-find-file)
红色字体部分需要根据实际情况更改为你自己的目录;
之后下载find、grep、xargs命令的windows版(下载地址:http://download.csdn.net/detail/bbeikke/5115646)
解压,加入目录到path环境变量
至此Projectile插件安装完成。
2、使用Projectile新建项目
使用Project新建项目非常简单,在项目根目录新建一个名为".projectile"空白文件,打开该项目下的任一文件即打开了该项目。
3、使用Projectile查找项目内任意文件
在项目里,按下前面设置的快捷键F5,输入文件名的前面几个字母既可定位到相应文件,
如下图所示:
如果发现输入名字没有办法定位项目内文件,在Emacs菜单上依次选择
Tools->Projectile->Invalidate cache ,之后再按F5重新索引项目文件即可。
4、使用整个项目全文搜索功能
如果前面已经配置了windows版的find、grep和xargs版的话现在就可以直接使用此功能了;
Tools->Projectile->Find in project (grep) 输入要查找的字符串即可在整个项目进行文本搜索。
搜索结果会打开一个buffer显示,非常方便。
原先Projectile的整个项目搜索功能会查找很多不要的东东,我在projectile.el里面增加了一个函数,
该函数全项目文本查找只查找erl和hrl结尾的文件
(defun projectile-erlgrep ()
"Perform rgrep in the project."
(interactive)
(let ((search-regexp (if (and transient-mark-mode mark-active)
(buffer-substring (region-beginning) (region-end))
(read-string (projectile-prepend-project-name "ErlGrep for: ") (thing-at-point 'symbol))))
(root-dir (expand-file-name (projectile-project-root))))
(require 'grep)
;; paths for find-grep should relative and without trailing /
(let ((grep-find-ignored-directories nil)
(grep-find-ignored-files nil))
(grep-compute-defaults)
(rgrep search-regexp "*.erl .hrl" root-dir))))
使用C-c p j或者Tools->Projectile->Find erl in project (erlgrep) 即可使用我定制的只查找erlang类型文件的全文查找功能。
我定制的Projectile在安装篇里有链接下载。
如果你想只索引*.cpp、*.c、*.h类型的文件,修改一下projectile-erlgrep函数的最后一行的扩展名即可。
Projectile的基本功能介绍完了,更多的功能可以Tools->Projectile里看到,
更详细的信息大家可以直接去项目主页查看。
祝大家Emacs用的愉快。