2010-01-27 13 views
7

Spesso utilizzo il comando grep-find in emacs per cercare tra i miei file di origine, ma sta annunciando che trova sempre corrispondenze nei file temporanei e nei file di backup e così via. Il comando di default per grep-scoperta è:Stringa predefinita per grep-find in emacs

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

So che posso modificarlo prima ho eseguito per abbinare le mie esigenze, ma come faccio a cambiare tale che sia corretta all'avvio?

risposta

8

Il pacchetto grep calcola un gruppo di valori predefiniti in primo piano (ma non necessariamente sul carico del pacchetto). Quindi vorrai che ciò accada, e quindi ridefinire il comando find. Qualcosa del tipo:

(grep-compute-defaults) 
(setq grep-find-command "find . ! -name \"*~\" ! -name \"#*#\" -type f -print0 | xargs -0 -e grep -nH -e ") 
+0

Grazie funziona bene (basta uno spazio alla fine). – Zitrax

+4

Ho dovuto usare 'grep-apply-setting' in Emacs 24:' (grep-apply-setting 'grep-find-command "trova.! -name \" * ~ \ "! -name \" # * # \ "-type f -print0 | xargs -0 -e grep -nH -e") ' – sandinmyjoints

0

Dai un'occhiata a come l'attuale versione di sviluppo di emacs lo gestisce: fornisce un elenco enorme di modelli di esclusione.

+0

Se la lista è enorme, evita di elencare il comando completo nel mini buffer? Non ho davvero bisogno di vederlo ogni volta che faccio una ricerca. – Zitrax

+0

a) provalo e guarda; b) sì, evitano di elencarlo nel minibuffer. Tuttavia, appare nella parte superiore del buffer '* grep *' (cioè, dove l'output va), ed è piuttosto grande. – offby1

7

Se si utilizza lgrep o rgrep invece di grep-trovare, è possibile impostare il backup di file/dirs ignorati in anticipo:

(eval-after-load "grep" 
    '(progn 
    (add-to-list 'grep-find-ignored-files "*.tmp") 
    (add-to-list 'grep-find-ignored-directories "_darcs"))) 
+0

Ho aggiunto '" .min.js "' a 'grep-find-ignored-files', ma rgrep non lo rispetta. Ottengo ancora risultati con i file * .min.js. – mcandre

+0

Ah, '" * .min.js "' fa il trucco. – mcandre

+0

Grazie per questo! Utile anche per 'helm-ag', che usa anche le impostazioni delle variabili' grep-find-ignored * '. Invece di aggiungere all'elenco esistente, ho scelto di collegarlo come "(custom-set-variable " grep-find-ignored-directories (elenco "SCCS" "RCS" "CVS" "MCVS" ".svn "" .git "" .hg "" .bzr "" _MTN "" _darcs "" {arch} "" objects "" build "" bin "" out "" lib "))' – Rob

2

Se si utilizza GNU grep un'altra bella soluzione è quella di mettere qualcosa di simile nella vostra .bashrc

export GREP_OPTIONS="--exclude=*#* --exclude=*.svn* --exclude=entries --exclude=all-wcprops --exclude=*.xcuserstate --exclude=project.pbxproj --exclude=*.svn-base --exclude=*.tmp" 

e basta dire a grep stesso di ignorare determinati file. Quindi si ottiene lo stesso comportamento anche dalla riga di comando.

Problemi correlati