emacs の grep モード
なんで今まで使っていなかったのか.
grep してマッチしたファイルの該当行を開くということができる. もちろん syntax highlight も. 開発環境ならばもう ack はいらないかもしれない
使い方
- デフォルトでは
M-x grep
でミニバッファに grep コマンドがでるので入力, 実行すると新しいバッファに結果が出る.- grep コマンドの任意のオプションをその場でつけることもできる. grep コマンドそのものなのでわかりやすい
- 見たいファイルにカーソルを合わせて Return でそのファイルの該当行を別バッファで開く
M-g n
で次の候補,M-g p
で前の候補に移動
カスタマイズ
デフォルトでは grep -nh -e
というオプションがついているが, -r
もつけたい. またキーバインドも設定したい.
Emacs実践入門 - おすすめEmacs設定2012 - ククログ(2012-03-20)
こちらのクリアコードさんの記事を参考に以下を設定しました.
;;; grep
(define-key global-map (kbd "C-x g") 'grep)
(require 'grep)
(setq grep-command-before-query "grep -nH -r -e ")
(defun grep-default-command ()
(if current-prefix-arg
(let ((grep-command-before-target
(concat grep-command-before-query
(shell-quote-argument (grep-tag-default)))))
(cons (if buffer-file-name
(concat grep-command-before-target
" *."
(file-name-extension buffer-file-name))
(concat grep-command-before-target " ."))
(+ (length grep-command-before-target) 1)))
(car grep-command)))
(setq grep-command (cons (concat grep-command-before-query " .")
(+ (length grep-command-before-query) 1)))