Как выполнить пошаговый поиск по нескольким текстовым файлам в VIM?

Как выполнить пошаговый поиск по нескольким текстовым файлам в VIM?

Есть ли способ заставить VIM выполнять инкрементный поиск в текстовых файлах?

Vim уже выполняет инкрементный поиск в текущем открытом файле.

Примерами программ, демонстрирующих тип поиска, который я пытаюсь осуществить, являются: Обозначение скоростидля MacOS,Резопдля окон илиSimpleNoteдля Интернета.

Эти приложения выполняют мгновенный или инкрементальный поиск в файлах определенного каталога и позволяют легко/быстро сузить круг поиска файла или создать новый файл.
Я использую оба, но предпочел бы работать в одном редакторе (это VIM).

Есть ли какой-нибудь плагин, который мог бы это сделать?

решение1

Вы можете использовать vimgrepкоманду, например:

:vimgrep /searchword/ ~/**

Видеть

:help vimgrep

для получения подробной информации.

решение2

Пока нет. Для получения хорошей производительности инкрементального поиска, вероятно, потребуется, чтобы кто-то написал плагин на языке C, который загружает файлы в большую оптимизированную структуру данных. Возможно, есть способ взломать vim, чтобы он запускал grep по всей базе данных каждый раз, когда вы нажимаете клавишу, но это, вероятно, будет недостаточно быстро.

В качестве примера плагина vim с открытым исходным кодом, который выполняет инкрементный поиск (по именам файлов, а не по их содержимому, к сожалению), вы можете рассмотреть плагин command-t:

https://wincent.com/products/command-t

Другое техническое ограничение, с которым можно столкнуться, если попытаться загрузить целую базу данных заметок в буферы vim, заключается в том, что каждый пользователь по умолчанию ограничен 1024 одновременно открытыми файлами, а многие базы данных заметок содержат больше заметок. Ограничение можно снять довольно легко, но пользователи не должны иметь дело с такими вещами.

решение3

Есть хороший плагин, который делает именно это, но с буферами:LustyExplorer.

Существуют и другие плагины, которые делают с файлами примерно то же самое:EasyGrepиАкно и инкрементный поиск этого не делает.

Первый (и другие, и NV или Resoph Notes) может делать инкрементальный поиск, потому что все файлы находятся в памяти, работая как своего рода база данных. Кажется, это немного сложнее реализовать на случайных файлах.

Мне бы очень хотелось увидеть такую ​​функциональность в Vim, потому что я только что перешел на Linux на постоянной основе, и мне не известно о замене Notational Velocity. NV был центральной частью моего рабочего процесса на Mac OS X, и это, на самом деле, единственная часть, которой сейчас не хватает. Объяснение проблемы и предложение решения Дрю Вагнера кажутся интересными.

Связанный контент