Получение количества вхождений во время инкрементального поиска (Cs / isearch-forward)

17

Вдохновленный современными браузерами, я хотел бы видеть, сколько встречается какой-либо строки, когда я ее ищу - например, «10 из 37» в правом верхнем углу скриншота ниже.

Хром 10 из 37

Есть ли способ получить это в Emacs? Предположительно, чтобы не замедляться, он должен работать только после некоторого простоя.

ShreevatsaR
источник
Это дубликат этих вопросов с тегами [emacs] в StackOverflow: stackoverflow.com/q/14764130/729907 , stackoverflow.com/q/22479140/729907 . Очевидно, что его нельзя закрыть как дубликат, так что я предполагаю, что это означает, что люди могут скопировать миллионы других вопросов, помеченных SO [emacs] ... Bonjour les degats.
Дрю
@Drew: Спасибо за эти указатели. Очевидно, что нецелесообразно рассматривать вопросы как дубликаты на разных веб-сайтах, равно как и вопрос, который вы рассматриваете здесь, как «дубликат» чего-то, заданного где-то еще (например, на gnu.emacs.help). Да, надежда на этот сайт заключается в том, что если здесь воспроизводятся хорошие вопросы от SO, это должно улучшить качество этого сайта. Я не знал, что вопрос был задан на SO, но это определенно хорошая идея для кого-то, у кого есть время, чтобы начать задавать (и отвечать) лучшие вопросы здесь. Может быть, должен быть способ перенести вопросы автоматически.
ShreevatsaR
Почему? Почему хорошо воспроизводить здесь «хорошие вопросы от SO»? Какова цель? Эта бета-версия проверяет, имеет ли смысл иметь отдельный сайт Emacs, в отличие от использования тега [emacs] в SO и т. Д. Если мы «докажем», что этот сайт имеет смысл, просто копируя вопросы из других мест, то что мы показали? Это не имеет смысла для меня. И почему мы хотим поощрять такое поведение? Кому это помогает (кроме ксерокса)? Если бы мы хотели перенести материал (чего мы не делаем , во время бета-тестирования), то, по крайней мере, первоначальный вопросник и респонденты были бы в курсе.
Дрю
@Drew: Цель состоит в том, чтобы иметь хорошее место для того, чтобы задавать вопросы об Emacs и отвечать на них. Всем сайтам SE рекомендуется «затравить» сайт во время (частной) беты хорошими вопросами и ответами, чтобы позже посетители сайта знали, какой контент подходит. Во всяком случае, я пришел сюда только потому, что услышал об этом сайте и подумал задать вопросы, которые беспокоили меня в данный момент; эти мысли о переносе вопросов были вызваны вашими замечаниями в первом комментарии выше.
ShreevatsaR
OK. Пожалуйста, отнеси это Мете , если тебе есть что сказать.
Дрю

Ответы:

15

anzuПакет делает это.

anzu.el предоставляет второстепенный режим, который отображает информацию о текущем совпадении и общем совпадении в строке режима в различных режимах поиска.

Скриншот

Каушал Моди
источник
Благодарность! Я добавил MELPA, установил anzu и включил его, и, похоже, он работает. Я подожду, чтобы увидеть, есть ли у кого-нибудь еще решение, которое не зависит от каких-либо пакетов (по крайней мере, пакетов, не входящих в ELPA).
ShreevatsaR
13

Вот некоторые возможности, которые не очень удобны, имеют преимущество работы с Emacs.

Если нажать M-s o( isearch-occur) во время инкрементального поиска, Происходит буфер треска с текущим выражением поиска. В верхней части *Occur*буфера находится количество совпадающих строк.

Команда how-manyотображает количество вхождений регулярного выражения (включая повторные вхождения). К сожалению, он не интегрирован с пошаговым поиском. Вот интеграция M-s #isearch для проверки концепции: нажмите во время isearch, чтобы показать количество совпадений.

(defun isearch-how-many (regexp)
  "Run `how-many' using the last search string as the regexp.
Interactively, REGEXP is constructed as with `isearch-occur'."
  (interactive
   (list (cond
      ((functionp isearch-word)
       (funcall isearch-word isearch-string))
      (isearch-word (word-search-regexp isearch-string))
      (isearch-regexp isearch-string)
      (t (regexp-quote isearch-string)))))
  (how-many regexp nil nil (interactive-p)))
(define-key isearch-mode-map [?\M-s ?#] 'isearch-how-many)
Жиль "ТАК - перестань быть злым"
источник
Это ... да. Это не совсем то, что я хочу, но очень важно знать лучшее, что возможно с стоковыми Emacs, спасибо.
ShreevatsaR
Кажется, это только показывает количество совпадающих строк, а не количество совпадений.
xuhdev
0

Я хотел бы предложить Swiper !

Swiper является альтернативой isearch, которая использует плющ, чтобы показать обзор всех совпадений.

введите описание изображения здесь

Serghei
источник