Есть ли способ заставить 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, и это, на самом деле, единственная часть, которой сейчас не хватает. Объяснение проблемы и предложение решения Дрю Вагнера кажутся интересными.