iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0
Software Development

Emacs 來寫程式系列 第 12

[Emacs-12] 專案管理 : Projectile

專案管理

Projectile 是 Emacs 常用的專案管理工具,它可以從 Git 的設定中,知道哪些檔案屬於這個專案需要編輯的,哪些是三方函式庫,不需要放入查詢中,它可以跟 Grep/AG 結合來搜尋專案中的特定函數或變數,可以取代這些函數或變數的名稱,可以很快的轉換到另一個專案... 等等

安裝

(use-package projectile
  :ensure t
  :bind-keymap ("\C-c p" . projectile-command-map)
  :config
  (projectile-mode t)
  (setq projectile-completion-system 'ivy)
  (use-package counsel-projectile
    :ensure t)
  )

(use-package ag
  :ensure t)

安裝時設定 Ctrl-c p 為啟動 projectile 熱鍵,預設是 Ctrl-c Ctrl-p 是依據 Emacs 的熱鍵設定規範,但我用習慣 Ctrl-c p 來啟動,這個可以看個人喜好設定,我們設定跟 projectile 配合的介面為 ivy,如果你使用 ido 或者 helm 它也可以支援,看個人喜好,順便安裝 counsel-projectile

我建議同時也安裝 the_silver_searcher 這個工具在系統端,在 Emacs 安裝 ag 這個套件來做快速搜尋,等一下使用說明會提到

使用方法

可以用 Ctrl-c p ? 來看所有有關指令 help

切換專案

使用 Ctrl-c p p 來切換專案,還沒加入清單的專案只要開過裡面的檔案一次,就會紀錄下來 switch

切換專案中的檔案

使用 Ctrl-c p f 來切換開啟專案中的檔案,會排除 .gitignore 下的部分,例如file
它就不會開啟 node_modules  下的檔案

搜尋變數或函式名稱

可以使用 Grep Ctrl-c p s g或者 ag Ctrl-c p s s,差別在於用 Grep 不會排除 .gitignore 的部分,例如搜尋 body grep
而使用 ag 會排除,例如 ag
在 *grep* *ag search* 緩衝區,使用 n 或是 p 來移動符合的搜尋結果,按 enter 來切換上面緩衝區的相關內容及位置

要使用 grepag 的情境,端看是否需要包含 .gitignore 的部分

ag 在 Emacs 下也可以單獨使用,不一定要在 projectile 下,使用 Meta-x ag
輸入要搜尋字串 search
接著輸入要搜尋的目錄 dir
不一定在 projectile 的專案下,也是可以使用Imgur
但在 projectile 下,可以限制搜尋的目標

切換相關檔案

有些程式語言,像是 C/C++ 有表頭檔 (header) 跟實作檔,使用 Ctrl-c p a (alternative) 可以馬上互相切換,如 alternative

使用 Ctrl-c p T 來切換實作檔跟測試檔
使用 Ctrl-c p r 來尋找取代變數或函式

編譯程式 C/C++

建立 build 目錄,使用 Ctrl-c p c ,第一次編譯 cd build && cmake ..,第二次編譯 cmake --build build compile

相關影片,請看

相關資訊,請參考我的部落格

影片簡報,請看 簡報

相關設定,請看 Github ,請下載 init.el 到本地的 ~/.emacs.d/下,啟動 Emacs 即可下載跟安裝套件


上一篇
[Emacs-11] 版本控制:Emacs Magit 的分支管理
下一篇
[Emacs-13] 用 Emacs 寫 C/C++ 設定篇
系列文
Emacs 來寫程式30

尚未有邦友留言

立即登入留言