A primeira resposta é linda, mas deixa de fora alguns detalhes críticos sobre as versões modernas do Emacs. Eu sou o próprio Emacs, então outros recém-chegados podem não estar cientes disso. Dado que seu objetivo é procurar texto DENTRO de um arquivo em um PROJETO, primeiro instale o Projectile usando o repositório MELPA.
Isso instala o pacote em .emacs.d e adiciona algumas configurações básicas ao .emacs no diretório $ USER (supondo que você tenha criado o arquivo .emacs), como exigir o Projectile na instalação do Emacs.
No entanto, você ainda precisa habilitá-lo e associar prefixos de mapa de teclas, para poder invocá-lo no mini buffer.
A resposta aceita menciona o seguinte comando:
C-c p s g
Isso não funcionará, a menos que você configure o Projectile com esse prefixo de mapa de teclas. Mas eu o configurei para usar Cc Cp como o comando do Project em .emacs:
(projectile-mode +1)
(define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)
Agora, considerando isso, sou capaz de realizar pesquisas de texto em arquivos em um projeto usando grep:
C-c C-p f # switch to a project first
C-c C-p s g # perform grep search in project
Para dividir, C-c C-p
invocará o projétil e s g
executará a pesquisa grep. Você obterá uma saída bonita como essa, supondo que sua pesquisa seja visit_contact
e você esteja pesquisando o rspec do Ruby em um projeto:
./spec/support/capybara_classification_code_helper.rb:21: def visit_contact
./spec/features/admin_edits_classification_code_role_dynamic_field_spec.rb:8: visit_contact
./spec/features/admin_edits_classification_code_role_dynamic_field_spec.rb:33: visit_contact
./spec/features/user_views_global_filters_from_line_item_spec.rb:9: visit_contact
rgrep
é um pouco confuso, pois exclui todos os arquivos que correspondem aos critérios de "arquivos inúteis" por padrão.