Como fazer 'procurar palavra-chave em arquivos' no emacs no Windows sem o cygwin?

3

Eu quero procurar por palavra-chave, diz 'action', em um monte de arquivos no meu PC Windows com Emacs.

É em parte porque quero aprender recursos mais avançados do emacs. É também porque o PC Windows está bloqueado pela política da empresa. Não consigo instalar aplicativos úteis como o cygwin à vontade.

Então eu tentei este comando: M-x rgrep

Ele lança a seguinte mensagem de erro:

*- mode: grep; default-directory: "c:/Users/me/Desktop/Project" -*-
Grep started at Wed Oct 16 18:37:43

find . -type d "(" -path "*/SCCS" -o -path "*/RCS" -o -path "*/CVS" -o -path "*/MCVS" -o -path "*/.svn" -o -path "*/.git" -o -path "*/.hg" -o -path "*/.bzr" -o -path "*/_MTN" -o -path "*/_darcs" -o -path "*/{arch}" ")" -prune -o "(" -name ".#*" -o -name "*.o" -o -name "*~" -o -name "*.bin" -o -name "*.bak" -o -name "*.obj" -o -name "*.map" -o -name "*.ico" -o -name "*.pif" -o -name "*.lnk" -o -name "*.a" -o -name "*.ln" -o -name "*.blg" -o -name "*.bbl" -o -name "*.dll" -o -name "*.drv" -o -name "*.vxd" -o -name "*.386" -o -name "*.elc" -o -name "*.lof" -o -name "*.glo" -o -name "*.idx" -o -name "*.lot" -o -name "*.fmt" -o -name "*.tfm" -o -name "*.class" -o -name "*.fas" -o -name "*.lib" -o -name "*.mem" -o -name "*.x86f" -o -name "*.sparcf" -o -name "*.dfsl" -o -name "*.pfsl" -o -name "*.d64fsl" -o -name "*.p64fsl" -o -name "*.lx64fsl" -o -name "*.lx32fsl" -o -name "*.dx64fsl" -o -name "*.dx32fsl" -o -name "*.fx64fsl" -o -name "*.fx32fsl" -o -name "*.sx64fsl" -o -name "*.sx32fsl" -o -name "*.wx64fsl" -o -name "*.wx32fsl" -o -name "*.fasl" -o -name "*.ufsl" -o -name "*.fsl" -o -name "*.dxl" -o -name "*.lo" -o -name "*.la" -o -name "*.gmo" -o -name "*.mo" -o -name "*.toc" -o -name "*.aux" -o -name "*.cp" -o -name "*.fn" -o -name "*.ky" -o -name "*.pg" -o -name "*.tp" -o -name "*.vr" -o -name "*.cps" -o -name "*.fns" -o -name "*.kys" -o -name "*.pgs" -o -name "*.tps" -o -name "*.vrs" -o -name "*.pyc" -o -name "*.pyo" ")" -prune -o  -type f "(" -iname "*.sh" ")" -exec grep -i -n "action" {} NUL ";"
FIND: Parameter format not correct

Grep exited abnormally with code 2 at Wed Oct 16 18:37:44

Eu acredito que rgrep tentou passar por um processo e chamou 'FIND' com todos os parâmetros. No entanto, como é um Windows, o executável Find padrão simplesmente não sabe como manipular.

Qual é a melhor maneira de procurar uma palavra-chave em vários arquivos no Emacs na plataforma Windows, sem qualquer dependência de programas externos?

Versão do Emacs: 24.2.1

    
por Anthony Kong 16.10.2013 / 09:53

2 respostas

2
  1. Se você usar Dired + e Icicles então você pode pesquisar todos os arquivos marcados em um buffer Dired, incluindo arquivos marcados em subdiretórios marcados, e assim em recursivamente.

    A pesquisa de sincelos é um tipo diferente de pesquisa incremental. Você define contextos de pesquisa , que são as partes do seu texto a serem pesquisadas. Você define os contextos fornecendo um regexp correspondente. Em um caso simples de rgrep -como comportamento, os contextos são apenas linhas de texto individuais, e o regexp de definição de contexto é, portanto, .* (corresponde a qualquer coisa, exceto um caractere de nova linha).

    Aqui é uma visão geral de Icicles pesquisam (e substituem) o comportamento.

    Se você tiver carregado Icicles e Dired +, o comando para procurar todos os arquivos marcados dentro e abaixo do atual buffer Dired está na chave M-s M-s m e está na barra de menus do modo Dired. como Multiple > Marked Here and Below > Icicles > Icicles Search (and Replace) .

  2. Se você usar somente Dired + e não também Icicles , você ainda pode pesquisar incrementalmente todos os arquivos marcados no diretório Dired atual e em todos os subdiretórios (recursivamente). Nesse caso, a pesquisa usa o Emacs Isearch comum. No modo Dired, as chaves para isso são M-+ M-s a C-s (pesquisa de sequência, comando diredp-do-isearch-recursive ) e M-+ M-s a C-M-s (pesquisa de regexp, comando diredp-do-isearch-regexp-recursive ). Há também a versão não incremental, comando diredp-do-search-recursive , que está vinculado a M-+ A . (Há também chaves / comandos para substituir a consulta dos arquivos marcados dentro e abaixo do diretório Dired atual.)

  3. Se você tiver Dired + e Icicles e estiver interessado apenas em descobrir qual de um determinado conjunto de arquivos contém uma determinada palavra-chave, ou seja, não procurando por ocorrências dessa palavra-chave, mas apenas quer saber se ela está presente, então você pode usar M-+ C-F (comando icicle-visit-marked-file-of-content-recursive , menu Multiple > Marked Here and Below > Icicles > Open File of Content ).

  4. Uma última palavra sobre o manuseio de arquivos marcados "aqui e abaixo": você pode marcar um subdiretório e não marcar nenhum de seus arquivos, para ter o mesmo efeito que marcar cada um de seus arquivos. Veja Dired + para mais informações.

por 04.11.2013 / 00:47
1

Abra o diretório em que você deseja pesquisar em dired-mode . Em seguida, marque todos os arquivos que você deseja pesquisar e, finalmente, faça M-x dired-do-search RET keyword RET .

Isso irá procurar os arquivos marcados para o keyword .

    
por 16.10.2013 / 18:48

Tags