Я новичок в vim и все еще изучаю некоторые его особенности. У меня проблема с vimgrep. Я могу найти шаблон, подобный этому vimgrep /define/ **
, чтобы найти и открыть следующий файл, содержащий define
. Но я еще не мог узнать, как перейти к следующему файлу/строке, которая соответствует моему шаблону. Любые указатели?
Как прыгать между шаблонами при использовании: vimgrep (список Quickfix)?
Ответ 1
Полезные команды для списка quickfix (скобки вокруг опускаемой части команд):
-
:cn[ext]
и:cp[revious]
перейти к следующей и предыдущей записи -
:cnf[ile]
и:cpf[ile]
перейти к следующему и предыдущему файлу (если список quickfix не отсортирован по файлу, вы можете напишите функцию, котораяgetqflist()
, выполняет сортировку, а затемsetqflist()
-
:cr[ewind]
и:cla[st]
перейти к началу или концу списка быстрого удаления -
:col[der]
и:cnew[er]
будут проходить через исторические списки быстрого исправления.
Излишне говорить, что есть много других команд, и вы можете обнаружить их в :help quickfix
.
Лично у меня есть следующие карты:
| ø | SHIFT | CTRL
------+--------+---------+---------
<F11> | :cprev | :cpfile | :colder
<F12> | :cnext | :cnfile | :cnewer
Конечно, если вы используете список местоположений вместо списка quickfix (:lvimgrep
), то существуют те же самые команды, просто замените начальный c
на l
и на него.
Vim 8 Дополнения:
-
:cdo
: выполнить команду для всех записей списка быстрого удаления. Например,:vim /foo/ *.cpp *.h *.hpp
может последовать:cdo s/pattern/replacement/g
-
:cfdo
: выполните команду all files in quickfix list. Например, фотографии:vim /foo/ *.cpp *.h *.hpp
может последовать:cfdo %s/2ndpattern/2ndreplacement/g
Ответ 2
Чтобы перейти к следующему появлению patter, вы можете использовать :cnext
. Вы можете перейти в обратном направлении с помощью :cnext
.
Я не уверен в возможности пропустить все вхождения до следующего файла автоматически, но вы можете открыть окно quickfix с помощью :cwindow
, чтобы просмотреть список совпадений и перейти к этим совпадениям, нажав Enter на запись в списке.