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


17

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

Хром 10 из 37

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


Это дубликат этих вопросов с тегами [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, которая использует плющ, чтобы показать обзор всех совпадений.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.