Выдалось немного времени, решил написать, как удобно организовать поиск по файлам в vim.
Скажу стразе, что в vim есть 2 функции, которые позволяют совершить поиск по файлам grep - выводит результат поиска в консоль, а vimgrep выводит результат поиска в командную строку vim.
Читайте: help vimgrep и help grep
Но любители монструозных IDE могут упрекнуть, что мол часто нужно вывести результат в какое-то окошечко и оперативно просматривая результаты открывать/закрывать файлы с нужным нам контентом.
Но vim был бы не vim, если бы там чего-то нельзя было сделать. Итак мой пример организации поиска по файлам в vim.
Для организации поиска по файлам я использую плагин grep.vim (автор Yegappan Lakshmanan) Данный плагин позволяет удобно делать поиск и работать с результатами поиска.
Кладем grep.vim в папку $VIM_HOME/plugin/
Данный плагин использует утилиту grep. Для пользователей Windows автор предусмотрел переменную Grep_Path
:let Grep_Path = 'с:\progs\grep.exe'
У Вас появятся целая куча новых функций для работы с поиском: :Grep, :GrepAdd, :Rgrep, :RgrepAdd, :GrepBuffer, ... Тут очень детально все описано http://www.vim.org/scripts/script.php?script_id=311.
Опишу лишь то, что чаще всего использую я.
Rgrep - рекурсивный поиск по файлам
RgrepAdd - добавляет результат поиска к результатам предыдущего поиска
GrepBuffer - поиск по всем открытым буфферам
Так же удобно забиндить какую-нибудь клавишу для поиска, я, например, использую F2 и F3.
Для этого открываем vimrc и добавляем такой код:
" F2 - Run recursive grep nnoremap <silent> <F2> :Rgrep<cr> " Shift-F2 - Same as ":Rgrep" but adds the results to the current results nnoremap <silent> <S-F2> :RgrepAdd<cr> " F3 - Search for a pattern on all open buffers nnoremap <silent> <F3> :GrepBuffer<cr>
Все, теперь, если Вам нужно найти что-то, просто нажимаем F2 вводим паттерн, по котором нужно осуществить поиск (по умолчанию предлагается текст под курсором), нажимаем Enter, вводим путь к файлам, в которых будет происходить поиск, Enter.
В отдельном окошке появляется список строк, в котором находиться запрашиваемый Вами текст.
Чтобы открыть нужный нам фрагмент, наводим на него курсор и нажимаем Enter.
Вот и все. В лучших традициях, так сказать, жирных IDE.
Пожелание: если есть интересные задачи в vim, которые Вам не удалось самостоятельно решить, или Вы считаете, что vim такое не может, то пишите в комменты, я постараюсь найти варианты решения. За ранее благодарен.
С ув. antonfin
Читать дельше...