Vous utilisez vim. Vous avez un outil pour faire cela intégré.
Comme on pouvait s'y attendre, il y a déjà sept réponses à utiliser grep. Mais il semble que je sois la seule personne à ce jour à avoir remarqué dans votre question que vous utilisez vim. En tant que tel, bien que vous puissiez utiliser grepde l'intérieur vim, vous pouvez également utiliser viml'outil intégré. Ceci est appelé via la :vimgrepcommande.
Pour rechercher "tous les fichiers source C dans le répertoire en cours pour les appels à la fonction toUpperCase()", vimtapez la commande
:vimgrep "\<toUpperCase\_s*(" *.c
La liste de correspondances résultante est automatiquement chargée dans la liste des correctifs rapides, accessible avec l’un des deux (voir l’aide en ligne pour connaître la différence subtile).
:copen
:cwin
Pour trouver la définition de la fonction , plutôt que de l'appeler, ctagsutilisez l'outil, comme indiqué dans Gillesla réponse de , en conjonction avec les commandes :tjumpou :tselect.
Pourquoi utiliser :vimgrep?
La fonction help ( :help grep) en ligne énumère plusieurs des raisons que je ne vais pas mentionner ici. En plus de celles-ci, comparez l’action de :vimgrepavec celle de dietbuddha' . dietbuddhaLa ligne de commande de sks lance un grepprocessus individuel pour chaque fichier source C individuel. Il n'emploie même pas xargspour réduire ces frais généraux. Et il vous reste à analyser la sortie pour appeler votre éditeur de texte sur les fichiers sources pertinents une fois que celui-ci est terminé. :vimgrepne déclenche pas du tout plusieurs processus supplémentaires, et utiliser le résultat est la simplicité même. Le simple fait de sélectionner l'une des entrées de la liste de correctifs rapides résultante positionne automatiquement le curseur sur la ligne appropriée du fichier source correspondant.
En fait, il fait exactement ce que vous avez écrit à la main, sauf automatiquement. C'est la manière automatisée de faire ces actions d'éditeur de texte. Il charge le fichier comme s'il était chargé à la main, recherche une expression régulière (en utilisant la même syntaxe d'expression régulière que celle que vous utilisez déjà ailleurs vim), enregistre les emplacements où les correspondances se produisent, puis décharge le fichier.