Como usar o Ctrl-P para pesquisar interativamente o conteúdo de todos os arquivos de um projeto?

15

Eu tentei hoje realizar uma pesquisa em todos os arquivos de um projeto. Eu uso Ctrl-P e pesquiso em linhas assim:

captura de tela

Mas o resultado da pesquisa está apenas no arquivo aberto anteriormente. Aqui eu abro apenas main.php.

Você conhece uma maneira de pesquisar em todos os arquivos sem precisar abri-los um por um?

Obrigado,

nobe4
fonte
11
Isso é algo que eu quero também. Se você estiver usando ack ou ag, o desempenho não deve ser um problema. Além disso, se você estiver usando o neovim, ele deve ser assíncrono, portanto também não deve haver nenhum bloco.
mhartington
Finalmente eu uso ag como comando ctrlp :)
nobe4

Respostas:

13

:CtrlPLine deve funcionar nos buffers listados.

Se você quiser absolutamente usar esse recurso em todos os arquivos do seu projeto, poderá adicioná-los à lista de argumentos (e, portanto, à lista de buffers) com algo como:

:argadd **/*.php

mas isso não parece uma boa ideia por razões de desempenho.

Usando :vimgrepou me :grepparece muito melhor:

:vim foo **/*.php
:cw

Você perde a "imprecisão" do CtrlP, obviamente, mas obtém confiabilidade e flexibilidade em troca.

Referência:

:help :argadd
:help :vimgrep
:help :grep
:help :cwindow
:help quickfix
romainl
fonte
A principal diferença entre CtrlP e vim-grep é que CtrlP é interativo .
ideasman42
1

Você deve usar esses plugins Sidesearch ou fzf

Ambos permitem procurar em diretórios recursivos usando o silversearch-ag

O fzf permite pesquisar nos arquivos listados que incluem sua string.

MisterBanal
fonte
11
Olá @MisterBanal, seja bem-vindo ao nosso site! Você deve ter uma resposta precisa se esses plug-ins puderem interagir com o CtrlP, conforme solicitado pelo OP. Se eles podem ser conectados, você deve explicar como e se eles não puderem, você deve pelo menos dar um exemplo básico de como usá-los, caso contrário, sua resposta não responderá realmente à pergunta. (Você pode alterar sua resposta com o botão "editar" abaixo do texto).
Statox