Я обнаруживаю, что снова и снова повторяю одну и ту же кодовую базу. Хотя это прекрасно работает, каждая команда занимает около 10 секунд, поэтому я думаю о том, как сделать это быстрее.
Так можно grep
использовать какой-то индекс? Я понимаю, что индекс, вероятно, не поможет сложным регулярным выражениям, но я использую в основном очень простые шаблоны. Существует ли индексатор для этого случая?
РЕДАКТИРОВАТЬ: я знаю о ctags и тому подобное, но я хотел бы сделать полнотекстовый поиск.
Ответы:
а как насчет cscope , это соответствует вашей обуви?
Позволяет искать код для:
источник
Полнотекстовая индексация
Существуют такие инструменты, как recoll , swish-e и sphinx, но вам нужно проверить, могут ли они поддерживать необходимый вам критерий поиска.
Recoll
Swish-е
сфинкс
Grep
Я удивлен, что grep работает так медленно, как вы описываете, можете ли вы уменьшить количество файлов, в которых ведется поиск? Например, когда мне нужно искать только в исходных файлах один исполняемый файл (из многих в проекте), я передаю grep имена из команды, в которой перечислены исходные файлы для этой программы:
sources
это программа, специфичная для моей среды разработки, но вы можете иметь (или иметь возможность создать) что-то эквивалентное.Я предполагаю, что вы пробовали очевидные методы, такие как
Я прочитал предположение, что
-P
опция currentgrep
может значительно ускорить поиск.источник
grep, нет. Но есть несколько программ, которые используют индексы и нацелены на кодовую базу.
ctags
(есть версия, поставляемая с vim),etags
(предназначенная для использования с emacs),global
(более независимая от редактора) - это та, о которой я думаю сейчас, но, возможно, есть и другая.источник
Вы можете скопировать свою кодовую базу на RAM-диск.
источник
если вы хотите использовать систему полнотекстового поиска .. используйте один:
источник
Нет, я так не думаю. Но может быть простое решение: попробуйте ack. Я думаю, что если вы дадите ему шанс, вы обнаружите, что он значительно быстрее, чем grep, требует более коротких строк поиска, чтобы получить лучшие результаты поиска, и имеет много желаемых функций, в то же время используя почти те же переключатели команд. Одна вещь, которая делает его более быстрым (хотя и не индексируемым), заключается в том, что он игнорирует гораздо больше вещей, которые вы не хотите искать. Он написан на Perl и использует регулярные выражения Perl (и, следовательно, также имеет порты Mac и Windows).
http://betterthangrep.com/
источник