5

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

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

Примерами программ, которые демонстрируют тип поиска, который я пытаюсь выполнить, являются Notational Velocity для MacOS, Resop для Windows или SimpleNote для Интернета.

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

Есть ли какой-нибудь плагин для этого?

3 ответа3

4

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

:vimgrep /searchword/ ~/**

Увидеть

:help vimgrep

для деталей.

2

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

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

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

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

2

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

Есть также другие плагины, которые почти так же работают с файлами: EasyGrep и Ack, но ни один не выполняет инкрементальный поиск.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .