Искать во всех каталогах

Я не могу понять, как искать в Vim во всех каталогах с помощью:

  • grep
  • подтверждение
  • находка
  • вимгреп

п.э. искать «элемент поиска» во всех файлах .txt в каталогах c:\ и d:\ (включая подкаталоги)

Может кто-нибудь мне помочь?


person Reman    schedule 24.12.2011    source источник
comment
ack.vim позволяет выполнять поиск внутри Vim. Пример: :Ack foo ..   -  person Samy Dindane    schedule 05.06.2013


Ответы (2)


Следующие работы для меня

:vimgrep /<search>/ {c:,d:}/**/*.txt
person Lieven Keersmaekers    schedule 24.12.2011
comment
Вы можете написать более одного шаблона для :vimgrep. Также попробуйте vimgrep /<search>/ {c:,d:}/**/*.txt или даже vimgrep /<search>/ [cd]:/**/*.txt. - person ZyX; 25.12.2011
comment
@ZyX - Спасибо, я понятия не имел. Я включил ваш комментарий в свой ответ. - person Lieven Keersmaekers; 26.12.2011
comment
Я думал, что это решение, но заметил, что оно зависает. Мне нужно использовать ctrl-c, чтобы разморозить мой vim. - person Reman; 31.12.2011
comment
@Remonn - команда работает нормально, но, возможно, немного медленнее на двух дисках? Что произойдет, если вы попробуете это на меньшей карте? - person Lieven Keersmaekers; 31.12.2011
comment
@Lieven, частично нашел. Я могу выполнять поиск в подкаталоге, когда я помещаю только один «» в путь: c:/*/.txt, он не работает, когда я помещаю [cd] или {c:,d:} перед /*/*.txt или /**/*.txt (я использую Windows, может быть проблема в этом?) - person Reman; 31.12.2011
comment
@Remonn - если честно, я не пробовал предложение, предложенное ZyX, я могу только поручиться за свое оригинальное редактирование. Вы можете быть правы, что это проблема Windows. - person Lieven Keersmaekers; 31.12.2011
comment
@ZyX - Если вы читаете это, не могли бы вы пролить свет на это. Ваше знание Vim будет высоко оценено. - person Lieven Keersmaekers; 31.12.2011
comment
@Lieven Я знаю только, что vimgrep /<search>/ c:/**/*.txt d:/**/*.txt должно работать, а другие мои решения могут (именно поэтому я сказал «попробовать», а не «вы также можете использовать»). Больше ничего не могу сказать: на данный момент среда wine, которую я использую для тестирования win32 vim, была очищена (а очищена она была больше недели назад). - person ZyX; 31.12.2011

Вы можете использовать grep как обычно

:grep -R 'search-item' path1 path2

Для получения дополнительной информации см.:

:h grep
person Ajnasz    schedule 29.12.2011
comment
этот способ работает намного лучше для меня, чем vimgrep. vimgrep блокирует мой сеанс vim и кажется очень медленным. - person Adamski; 15.01.2015