git grep
を Emacs から起動できたら捗るだろうなぁと思い立ってちょっと調べてみたら、そのものズバリの拡張である helm-git-grep が存在していました。
これを導入すると、Emacs から git grep を呼び出せるようになり、
- helm インタフェースで使用し、インクリメンタルに該当箇所を検索
- 当然、その結果ファイル・行に瞬時に移動する
なんてことができるようになります。 なんでおれは、これを調べていなかったんや…というレベル。
helm-git-grep 導入
ぼくの elisp 管理は現在も Cask なので、Cask
ファイルに helm-git-grep
を以下のように宣言た後、コマンドラインから cask
を実行します。
(depends-on "helm-git-grep")
これで load-path
に helm-git-grep.el
が組込まれるので、あとはこのファイル用の設定を書いていけば良いでしょう。
(require 'helm-git-grep) (global-set-key (kbd "C-c g") 'helm-git-grep) ;; Invoke `helm-git-grep' from isearch. (define-key isearch-mode-map (kbd "C-c g") 'helm-git-grep-from-isearch) ;; Invoke `helm-git-grep' from other helm. (eval-after-load 'helm '(define-key helm-map (kbd "C-c g") 'helm-git-grep-from-helm))
wgrep.el
との連携
Emacs で grep といえば、wgrep.el
を使いたくなるところです。
wgrep.el
は、Emacs で行なった grep
の結果一覧バッファを直接編集することでその編集結果を実ファイル側に反映できるという elisp なのですが、helm-git-grep
はこの wgrep.el との連携が可能です。
helm-git-grep
の結果一覧画面から、C-x C-s
を押すと、helm-git-grep-run-save-buffer
が呼び出され *hggrep
バッファにその内容が保存されます。あとは、(wgrep.el
を使用できる設定にしていれば) e
を押下すれば wgrep
の編集を有効化できるようになります。ホントに便利。