天天看點

Emacs使用Projectile管理項目,可快速通路項目裡任何檔案,支援全項目關鍵詞搜尋

剛從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使用Projectile管理項目,可快速通路項目裡任何檔案,支援全項目關鍵詞搜尋

如果發現輸入名字沒有辦法定位項目内檔案,在Emacs菜單上依次選擇

Tools->Projectile->Invalidate cache ,之後再按F5重新索引項目檔案即可。

4、使用整個項目全文搜尋功能

如果前面已經配置了windows版的find、grep和xargs版的話現在就可以直接使用此功能了;

Tools->Projectile->Find in project (grep)  輸入要查找的字元串即可在整個項目進行文本搜尋。

搜尋結果會打開一個buffer顯示,非常友善。

Emacs使用Projectile管理項目,可快速通路項目裡任何檔案,支援全項目關鍵詞搜尋

原先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用的愉快。