2009-07-07 3 views
17

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

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

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

Спасибо,

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

ответ

9

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

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

EDIT: TagList и Ctags будет работать на Windows, а также (это то, что я использую). См. Страницу установки TagList и часто задаваемые вопросы. Следующие ссылки могут оказаться полезными:

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

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

I настроить его o n моя машина Windows некоторое время назад, но я не помню, чтобы возникали проблемы.

1

Я не знаю, как я нашел, что это, но выглядит как кто-то написал плагин для google desktop

4

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

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

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

5

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

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

+0

Это очень хорошо работает для меня. У нас есть тысячи файлов, и обычный grep (или даже ack) может занять десятки секунд. Но что-то вроде ': Ack -ruby * something *' обычно возвращается через секунду или два, так как он ищет только подмножество файлов. –

-1

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

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

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

: ХО

+2

Вопрос о том, что vimgrep слишком медленный для него .... – 0xc0de

0

Попробуйте i nstall 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 
+0

Не уверен, что это будет быстрее, чем встроенный grep или vimgrep. – sixtyfootersdude