Быстрый «Найти в файлах» для VIM?

Какие есть варианты для действительно быстрого поиска «Найти в файлах» в VIM?

Наша кодовая база достаточно велика, поэтому поиск должен работать по индексу. grep/vimgrep/etc работают слишком медленно.

Индексация не должна быть особенно быстрой; Я могу проиндексировать за ночь.

Спасибо,

[EDIT] Я также работаю в среде Windows.


person Christopher Stott    schedule 07.07.2009    source источник


Ответы (6)


Если это исходный код (а не полнотекстовый поиск), то ctags с плагином TagList должны хорошо работать для ваших нужд. См., например:

http://www.thegeekstuff.com/2009/04/ctags-taglist-vi-vim-editor-as-source-code-browser/

РЕДАКТИРОВАТЬ: TagList и ctags будут работать и в Windows (это то, что я использую). См. страницу установки TagList и часто задаваемые вопросы. Следующие ссылки могут оказаться полезными:

Также есть форум TagList, где вы можете получить дополнительную помощь:

http://tech.groups.yahoo.com/group/taglist/

Я установил его на своем компьютере с Windows некоторое время назад, но я не помню, чтобы сталкивался с какими-либо проблемами.

person ars    schedule 07.07.2009

Что-то, что я использую, но не через vim, это ack: http://betterthangrep.com/

Это инструмент на основе Perl, и его можно использовать в Windows.

person phss    schedule 09.07.2009
comment
Это работает очень хорошо для меня. У нас тысячи файлов, и обычный grep (или даже ack) может занять десятки секунд. Но что-то вроде :Ack --ruby *something* обычно возвращается через секунду или две, так как ищет только подмножество файлов. - person Adam Batkin; 07.12.2011

Если вы работаете с большой кодовой базой, возможно, пришло время поискать более мощное решение, чем обычные инструменты. OpenGrok — это очень быстрый механизм поиска исходного кода и перекрестных ссылок. Помимо отличной производительности, он интегрируется с Subversion, Mercurial и ClearCase, среди прочего программного обеспечения для контроля версий исходного кода. Это звучит очень похоже на то, что вы могли бы использовать.

Если вам нужна поддержка использования OpenGrok из Vim, вы можете легко написать функцию vim, которая будет вызывать system(), чтобы начать поиск для вас. Чтобы узнать больше о написании новых команд vim, найдите :help 40.2 в vim.

Надеюсь, это то, что вы искали.

person Zachary Murray    schedule 07.07.2009

Не знаю, как я это нашел, но похоже, что кто-то написал плагин для рабочий стол Google

person Sam Saffron    schedule 07.07.2009

Попробуйте установить https://github.com/mileszs/ack.vim, http://beyondgrep.com/ ,

тогда сделай ссылку

ln -s /usr/bin/ack-grep /usr/bin/ack 

и добавить

noremap <C-f> :copen<CR>:Ack -aQi --ignore-dir someignoringdir

в свой .vimrc, после того, как вы сможете найти в файлах через Ctrl+F, наслаждайтесь

_   /|
\'o.O'
=(___)=
   U  
person IvanM    schedule 04.09.2013
comment
Не уверен, что это будет быстрее, чем встроенный grep или vimgrep. - person sixtyfootersdude; 06.03.2014

Вы можете попробовать это

:vimgrep /что-то/ */

и не забудьте открыть окно результатов поиска после

:cw

person IvanM    schedule 24.05.2013