私はよくemacsでコマンドgrep-findを使用してソースファイルを検索しますが、一時ファイルやバックアップファイルなどで常に一致するものが見つかるのは残念です。grep-findのデフォルトコマンドは次のとおりです。
find . -type f -print0 | xargs -0 -e grep -nH -e
実行する前にニーズに合わせて変更できることはわかっていますが、起動時に正しくなるように変更するにはどうすればよいですか?
grep
パッケージは、事前に一連のデフォルトを計算します(ただし、必ずしもパッケージのロード時に計算する必要はありません)。したがって、それを実現してから、 findコマンドを再定義する必要があります。何かのようなもの:
(grep-compute-defaults)
(setq grep-find-command "find . ! -name \"*~\" ! -name \"#*#\" -type f -print0 | xargs -0 -e grep -nH -e ")
grep-findの代わりにlgrepまたはrgrepを使用する場合は、無視されるファイル/ディレクトリを事前に設定できます。
(eval-after-load "grep"
'(progn
(add-to-list 'grep-find-ignored-files "*.tmp")
(add-to-list 'grep-find-ignored-directories "_darcs")))
GNU grepを使用する場合、別の優れた解決策は、このようなものを.bashrcに配置することです。
export GREP_OPTIONS="--exclude=*#* --exclude=*.svn* --exclude=entries --exclude=all-wcprops --exclude=*.xcuserstate --exclude=project.pbxproj --exclude=*.svn-base --exclude=*.tmp"
grep自体に特定のファイルを無視するように指示するだけです。次に、コマンドラインからも同じ動作を取得します。
emacsの現在の開発バージョンがそれをどのように処理するかを見てください-それは除外パターンの膨大なリストを提供します。