Pergunta

Mx grep, Mx lgrep, Mx rgrep não funcionam no EmacsW32 para mim.

Eu faço M-x lgrep e diz que grep não é um 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

Além disso, o que é essa coisa NUL?A página inicial do EmacsW32 diz que vem com utilitários Gnuwin32, mas parece que o trabalho de configuração para realmente usar o grep Gnuwin32 é deixado para os usuários.

Como posso configurá-lo para usar o grep Gnuwin32 fornecido ou o grep cygwin?Ambos estão bem?

Foi útil?

Solução

Este artigo tem algumas dicas sobre como fazer isso funcionar.

Eu fiz isso funcionar outro dia, você pode definir a variável de ambiente PATH dentro do emacs, e se você tiver o cygwin e/ou o gnuw32 instalado, basta definir o caminho para eles.Este é um trecho do meu .emacs aplicável apenas no Windows.Defino em variáveis ​​(cygwin-bin, gnu-bin) o caminho onde os programas estão instalados.Em seguida, construa o caminho para eles.Uma desvantagem é que isso atrapalha o resto do meu caminho.O que não tem sido um problema até agora, mas se eu fosse mais esperto com o LISP provavelmente conseguiria descobrir alguma coisa.De qualquer forma, espero que isso ajude.

;;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 acrescentar que cheguei a esta solução porque colocar qnuwin32 na frente do caminho no Windows parece uma proposta arriscada, você corre o risco de bagunçar outros programas em sua máquina.Portanto, este parecia ser um bom compromisso.

Outras dicas

O Windows não vem com um grep utilidade (na verdade, ele tem findstr, mas não é exatamente a mesma coisa), então você precisa instalar algo como Cygwin ou utilitários unix para windows.Depois de instalá-los, você precisa adicioná-los ao %PATH%, para que o Windows saiba onde procurá-los.Você pode fazer isso na linha de comando executando cmd.exe e emitindo um comando set PATH=<your_path>;%PATH% ou em algumas configurações a janela que você obtém clicando com o botão direito em Meu computador ícone (chamado algo como variáveis ​​ambientais aqui estão algumas fotos dele).

Observe que o Windows tem um utilitário chamado find e também está no sistema %PATH%, que pode fazer certos comandos (como M-x grep-find) não funciona corretamente, por isso é importante que você coloque o unix-find primeiro no seu %PATH%.

Eu acho que o usuário do emacsw32 precisa primeiro definir a opção de usuário w32shell-shell através do menu Options > Customize EmacsW32, que é definido como nenhum originalmente, e o usuário deve defini -lo como CMD ou Cygwin. Configurar para CMD significa que o MX Grep usará o GNUWIN32 GREP interno (e CMD.exe como uma concha) e, se a configuração for salva corretamente, os dotemacs conterão linhas como as seguintes:

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

O formulário de variável personalizado deve ser colocado o mais próximo possível do início dos dotemacs.

Por alguma razão no meu sistema, isso não é suficiente, o MX Grep insistirá em usar "grep -n" como seu modelo em vez de "grep -nh -e" e sempre anexa "nu". Nesse caso, adicione a seguinte linha no arquivo dotemacs.

(grep-compute-defaults)

Aqui está uma resposta sem sentido que funciona:

http://groups.google.com/group/gnu.emacs.help/browse_thread/thread/39cd9d63b07a9988#

Apreciar!

Eu uso Cygwin (uma versão antiga). Para emacs, eu uso bibliotecas cygwin-mount.el e Configuração cygwin.el, carregado nessa ordem. Funciona muito bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top