Невозможно эффективно искать в Emacs - PullRequest
7 голосов
/ 26 мая 2009

Я хочу, чтобы в Emacs был такой же инструмент, как в Vim

 :g/search/

, чтобы получить список совпадений.

Как вы можете получить список матчей в Emacs?

Ответы [ 3 ]

16 голосов
/ 26 мая 2009

M-x occur?

С инструкция :

M-x occur

Запрашивает регулярное выражение и отображает список, показывающий каждую строку в буфере, которая соответствует ему. Соответствующий текст выделяется с помощью match. Чтобы ограничить поиск частью буфера, сузьте до этой части (см. Сужение). Числовой аргумент n указывает, что n строки контекста должны отображаться до и после каждой совпадающей строки. Количество строк контекста по умолчанию задается переменной list-matching-lines-default-context-lines.

В буфере *Occur* вы можете щелкнуть по каждой записи или переместить туда точку и ввести RET, чтобы посетить соответствующую позицию в буфере, в котором был произведен поиск. o и C-o отображают совпадение в другом окне; C-o не выбирает его. Кроме того, вы можете использовать команду C-x ` (next-error), чтобы посещать вхождения по одному (см. Режим компиляции).

Ввод e в буфере *Occur* переключает в режим редактирования Occur, в котором изменения, внесенные в записи, также применяются к тексту в исходном буфере. Введите C-c C-c, чтобы вернуться в режим Occur.

Команда M-x list-matching-lines является синонимом M-x occur.

5 голосов
/ 26 мая 2009

В дополнение к M-x occurr проверьте также M-x grep. Это работает в нескольких файлах одновременно.

4 голосов
/ 26 мая 2009

Мой обычный рабочий процесс - не получить список и выбрать (не знаю, как это сделать), а использовать инкрементальный поиск:

C-s <search target>

получает первый матч после очка. Если вам это не нравится, другой C-s получает следующий. Продолжайте, пока вы не будете счастливы (вам понадобятся дополнительные C-s, чтобы обернуться вокруг буфера). Достаточно новый emacsen также может подсвечивать все видимые совпадения.

Как отмечается в комментариях Торёка Габора, это типичная комбинация клавиш isearch-forward. Если ваши привязки отличаются, вам нужно изменить предписанную процедуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...