剛從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用的愉快。