projectile はプロジェクト内のファイルを検索したりするのに便利なパッケージ
いつも通り el-get からインストールする
(el-get-bundle projectile)
このあたりで有効化しておいている。この順序に意味があったかは忘れた……。
(projectile-mode)
普段 Rails ばっかりやってるのでそれ関係のものを無視リストに入れている。けどあんまりメンテしてない。
(add-to-list 'projectile-globally-ignored-directories "tmp")
(add-to-list 'projectile-globally-ignored-directories ".tmp")
(add-to-list 'projectile-globally-ignored-directories "vendor")
(add-to-list 'projectile-globally-ignored-directories ".sass-cache")
(add-to-list 'projectile-globally-ignored-directories "coverage")
(add-to-list 'projectile-globally-ignored-directories "cache")
(add-to-list 'projectile-globally-ignored-directories "log")
node_modules もここに突っ込んでも良いかもしれない。
(add-to-list 'projectile-globally-ignored-files "gems.tags")
(add-to-list 'projectile-globally-ignored-files "project.tags")
(add-to-list 'projectile-globally-ignored-files "manifest.json")
tags ファイルは昔は使っていたけど、最近は dumb-jump が優秀なのと、面倒で使ってないのでそろそろ gems.tags と project.tags は不要かもしれない。
上の方で helm との連携処理を入れていたが今は大体 ivy に乗り換えているので ivy 連携もしている。
(setq projectile-completion-system 'ivy)
(el-get-bundle counsel-projectile)
counsel-projectile はいくつかの絞り込み処理を提供してくれて便利。それでも足りなかったら自前で何か作ることになるのかなと思っている。
デフォルトでいくつかのキーバインドが用意されてるようだけどそんなものさっぱり覚えられないのでとりあえずいくつかを Hydra で叩けるようにしている
(with-eval-after-load 'pretty-hydra
(pretty-hydra-define
projectile-hydra (:separator "-" :title "Projectile" :foreign-key warn :quit-key "q" :exit t)
("File"
(("f" counsel-projectile-find-file "Find File")
("d" counsel-projectile-find-dir "Find Dir")
("r" projectile-recentf "Recentf"))
"Edit"
(("R" projectile-replace "Replace"))
"Other"
(("p" (counsel-projectile-switch-project 'counsel-projectile-switch-project-action-vc) "Switch Project")))))
Key | 効果 |
---|---|
f | プロジェクト内のファイルを検索 |
d | プロジェクト内のフォルダを検索 |
r | プロジェクト内で最近触ったファイルのリスト表示 |
p | 別のプロジェクトに切り替え |
projectile-find-implementation-or-test
projectile-replace
projectile-replace-regexp
あたりも使えるようにするともしかしたら便利かもしれない。あとは counsel-projectile-grep
とかの類かな〜
基本的に Rails のプロジェクトをやっているので projectile-rails をベースにいつも触ってるので projectile そのものはあまり弄ってないのであった