30

При использовании плагина grep для VIM я могу искать в текущем каталоге все вхождения строки в наборе файлов, например так:

:grep Ryan *.txt

Это выводит что-то вроде этого:

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue

Если я нажимаю клавишу ввода, он просто возвращает меня в мой редактор. Что я действительно хочу сделать, так это иметь возможность открыть один из этих файлов и перейти к месту, где была найдена строка. Есть ли способ сделать это? Часть 1 of 3 заставляет меня думать, что есть способ просмотреть результаты, но я не знаю, какие команды мне доступны. Кто-нибудь может пролить свет на это?

1 ответ1

32

Когда вы нажимаете ENTER, вы должны смотреть на строку 3 файла file1.txt. Чтобы перейти к следующему совпадению, выполните :cn ; чтобы перейти к предыдущему совпадению, выполните :cp . Выполнение :copen откроет окно со списком совпадений. Переместите курсор к желаемому совпадению и нажмите ENTER, чтобы перейти к этому совпадению.

Подробнее об использовании :grep , смотрите

:help grep
:help quickfix.txt

Ввод :cn и :cp для перемещения вперед и назад в списке быстрых исправлений может быть неудобным, поэтому я использую следующие сопоставления:

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

Кроме того, команда :grep не является плагином; это часть Vim.

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