Je me surprends à répéter encore et encore la même base de code. Bien que cela fonctionne très bien, chaque commande prend environ 10 secondes, donc je réfléchis aux moyens de l'accélérer.
Alors, peut grep
utiliser une sorte d'index? Je comprends qu'un index ne sera probablement pas utile pour les expressions rationnelles complexes, mais j'utilise principalement des patters très simples. Existe-t-il un indexeur pour ce cas?
EDIT: Je connais les ctags et autres, mais je voudrais faire une recherche en texte intégral.
Réponses:
qu'en est-il de cscope , est-ce que cela correspond à vos chaussures?
Permet de rechercher du code pour:
la source
Indexation de texte intégral
Il existe des outils tels que recoll , swish-e et sphinx, mais vous devez vérifier s'ils peuvent prendre en charge le type de critères de recherche dont vous avez besoin.
Rappel
Swish-e
Sphinx
grep
Je suis surpris que grep soit aussi lent que vous le décrivez, pouvez-vous réduire le nombre de fichiers recherchés? Par exemple, lorsque je n'ai besoin de rechercher dans les fichiers source qu'un seul exécutable (parmi plusieurs dans un projet), je nourris grep les noms à partir d'une commande qui répertorie les fichiers source de ce programme:
sources
est un programme spécifique à mon environnement de développement mais vous pouvez avoir (ou être capable de construire) quelque chose d'équivalent.Je suppose que vous avez essayé des techniques évidentes telles que
J'ai lu une suggestion selon laquelle l'
-P
option de courantgrep
peut accélérer considérablement les recherches.la source
grep, non. Mais il existe plusieurs programmes qui utilisent des index et visent la base de code.
ctags
(il existe une version fournie avec vim),etags
(destinée à être utilisée avec emacs),global
(plus indépendante de l'éditeur) sont celle à laquelle je pense maintenant mais il y en a probablement d'autres.la source
Vous pouvez copier votre base de code sur un disque RAM.
la source
si vous souhaitez utiliser un moteur de recherche plein texte .. utilisez-en un:
la source
Non je ne pense pas. Mais il peut y avoir une solution simple: essayez ack. Je pense que si vous lui donnez une chance, vous le trouverez beaucoup plus rapide que grep, nécessite des chaînes de recherche plus courtes pour obtenir de meilleurs résultats de recherche et possède de nombreuses fonctionnalités souhaitables, tout en utilisant à peu près les mêmes commutateurs de commande. Une chose qui le rend plus rapide (bien que non indexé) est qu'il ignore beaucoup plus de choses que vous ne voulez pas rechercher. Il est écrit en Perl et utilise les expressions régulières de Perl (et dispose donc également de ports Mac et Windows).
http://betterthangrep.com/
la source