Domanda

M-x grep, M-x lgrep, M-x rgrep non funzionano in EmacsW32 per me.

Lo faccio M-x lgrep e dice grep non è un comando:

grep -i -n "hello" * NUL
'grep' is not recognized as an internal or external command,
operable program or batch file.

Grep finished with no matches found at Sun Jan 31 05:59:06

Anche ciò che è che cosa NUL? EmacsW32 homepage dice che le navi con le utility GnuWin32 ma sembra che il lavoro per la configurazione di utilizzare effettivamente la GnuWin32 grep è lasciata agli utenti.

Come posso configurarlo per utilizzare il spediti GnuWin32 grep o grep cygwin? Sono entrambi bene?

È stato utile?

Soluzione

Questo articolo ha alcuni suggerimenti su come ottenere questo lavoro.

ho ottenuto questo lavoro l'altro giorno, è possibile impostare la variabile d'ambiente PATH all'interno di Emacs, e se si dispone di cygwin e / o gnuw32 installato semplicemente impostare il percorso a quelli. Si tratta di un frammento dal mio .emacs che è applicabile solo su Windows. Ho impostato a variabili (cygwin-bin, GNU-bin) al percorso in cui sono installati i programmi. Poi costruire il percorso di quelli. Uno svantaggio è che soffia via il resto del mio percorso. Che non è stato un problema fino ad ora, ma se fossi più intelligente con LISP probabilmente potrei capire qualcosa. In ogni caso, spero che questo aiuta.

;;windows only stuff

(when (string-equal system-type "windows-nt")

(progn

(setq cygwin-bin "c:\\apps\\cygwin\\bin")

(setq gnu-bin "C:\\apps\\GnuWin32\\gnuwin32\\bin")

(setenv "PATH"

(concat cygwin-bin ";" gnu-bin ";"))

(setq exec-path

'(cygwin-bin gnu-bin)))) 

Devo aggiungere, sono arrivato a questa soluzione perché mettere qnuwin32 davanti al percorso in finestre sembra essere una proposta rischiosa, si corre il rischio di rovinare altri programmi sulla vostra macchina. Quindi questo sembrava essere un buon compromesso.

Altri suggerimenti

Windows non sono dotati di un programma di utilità grep (in realtà ce l'ha findstr, ma non è esattamente la stessa cosa), quindi è necessario installare qualcosa come cygwin o utils unix per le finestre . Dopo l'installazione di questi, è necessario aggiungere loro di %PATH%, in modo che Windows sarebbe sapere dove cercare per loro. Si può fare sia in linea di comando eseguendo cmd.exe e l'emissione di un set PATH=<your_path>;%PATH% comando o in qualche impostazioni vedova si ottiene facendo clic destro un Risorse del computer icona (nome simile a variabili d'ambiente qui sono alcune immagini di esso).

Nota, Windows ha un'utility chiamata find ed è anche in %PATH% sistema, che può rendere alcuni comandi (come M-x grep-find) non funziona correttamente, quindi è importante mettere unix-trovare prima nella tua %PATH%.

Credo che l'utente prima necessità EmacsW32 per impostare l'opzione utente w32shell-shell tramite il Options > Customize EmacsW32 menù, che è impostato a nessuno in origine, e l'utente deve impostare a uno cmd o Cygwin. Porla a mezzo cmd M-x grep utilizzerà le linee incorporato GnuWin32 grep (e cmd.exe come shell) e se l'impostazione viene salvata correttamente, i dotemacs conterranno come la seguente:

(custom-set-variables
 ...  
 '(w32shell-shell (quote cmd))
 ...)

Il modulo personalizzato-set-variable deve essere collocato il più vicino possibile agli inizi degli dotemacs possibile.

Per qualche ragione nel mio sistema, questo non è sufficiente, M-x grep insisterà usare "grep -n" come il suo modello piuttosto che "grep -nH -e" ed aggiunge sempre "Nul". In tal caso, aggiungere la seguente riga nel file dotemacs.

(grep-compute-defaults)

Io uso Cygwin (una vecchia versione). Per l'uso Emacs io librerie cygwin-mount.el e setup-cygwin.el , caricato in questo ordine. Funziona bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top