Строка по умолчанию для grep-find в emacs - PullRequest
7 голосов
/ 27 января 2010

Я часто использую команду grep-find в emacs для поиска в моих исходных файлах, но раздражает, что она всегда находит совпадения во временных файлах и файлах резервных копий и так далее. Команда по умолчанию для grep-find:

find . -type f -print0 | xargs -0 -e grep -nH -e

Я знаю, что могу изменить его, прежде чем запустить его в соответствии с моими потребностями, но как мне изменить его так, чтобы оно корректно при запуске?

Ответы [ 4 ]

8 голосов
/ 27 января 2010

Пакет grep вычисляет кучу значений по умолчанию (но не обязательно при загрузке пакета). Таким образом, вы захотите, чтобы это произошло, и затем переопределите команду поиска. Что-то вроде:

(grep-compute-defaults)
(setq grep-find-command "find . ! -name \"*~\" ! -name \"#*#\" -type f -print0 | xargs -0 -e grep -nH -e ")
7 голосов
/ 28 января 2010

Если вы используете lgrep или rgrep вместо grep-find, вы можете заранее настроить игнорируемые файлы / каталоги:

(eval-after-load "grep"
  '(progn
    (add-to-list 'grep-find-ignored-files "*.tmp")
    (add-to-list 'grep-find-ignored-directories "_darcs")))
2 голосов
/ 09 июня 2011

Если вы используете 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 игнорировать определенные файлы. Тогда вы получите такое же поведение и из командной строки.

0 голосов
/ 27 января 2010

Посмотрите, как обрабатывает текущая версия emacs для разработки - он предоставляет огромный список шаблонов исключений.

...