Comment utiliser Ctrl-P pour rechercher de manière interactive le contenu d'un fichier pour tous les fichiers d'un projet?

15

J'ai essayé aujourd'hui d'effectuer une recherche sur tous les fichiers d'un projet. J'utilise Ctrl-P et je recherche sur des lignes comme ceci:

capture d'écran

Mais le résultat de la recherche est uniquement sur le fichier précédemment ouvert. Ici, j'ouvre seulement main.php.

Connaissez-vous un moyen de rechercher sur tous les fichiers sans avoir à les ouvrir un par un?

Merci,

nobe4
la source
1
C'est quelque chose que je veux aussi. Si vous utilisez ack ou ag, les performances ne devraient pas être un problème. De plus, si vous utilisez neovim, cela devrait être asynchrone, donc il ne devrait pas y avoir de bloc non plus.
mhartington
Enfin j'utilise ag comme commande ctrlp :)
nobe4

Réponses:

13

:CtrlPLine est en fait censé fonctionner sur les tampons répertoriés.

Si vous voulez absolument utiliser cette fonctionnalité sur chaque fichier de votre projet, vous pouvez les ajouter à la liste des arguments (et donc à la liste des tampons) avec quelque chose comme:

:argadd **/*.php

mais cela ne semble pas être une très bonne idée pour des raisons de performances.

Utiliser :vimgrepou :grepsonne beaucoup mieux pour moi:

:vim foo **/*.php
:cw

Vous perdez le "flou" de CtrlP, évidemment, mais vous obtenez en retour fiabilité et flexibilité.

Référence:

:help :argadd
:help :vimgrep
:help :grep
:help :cwindow
:help quickfix
romainl
la source
Une différence clé entre CtrlP et vim-grep est que CtrlP est interactif .
ideasman42
1

Vous devez utiliser ces plugins Sidesearch ou fzf

Les deux permettent de rechercher dans des répertoires récursifs à l'aide de silversearch-ag

fzf permet de rechercher sur les fichiers listés qui incluent votre chaîne.

MisterBanal
la source
1
Bonjour @MisterBanal, bienvenue sur notre site! Vous devez préciser dans votre réponse si ces plugins peuvent être interfacés avec CtrlP comme OP l'a demandé. S'ils peuvent être interfacés, vous devez expliquer comment et s'ils ne le peuvent pas, vous devez au moins donner un exemple de base de la façon de les utiliser, sinon votre réponse ne répond pas vraiment à la question. (Vous pouvez changer votre réponse avec le bouton "modifier" sous le texte).
statox