Отримання кількості подій під час поступового пошуку (Cs / isearch-forward)


17

Натхненний сучасними браузерами, я хотів би бачити, скільки зустрічається в деяких рядках, коли я шукаю його, як-от "10 з 37" у верхньому правому куті екрана внизу.

Chrome 10 з 37

Чи є спосіб отримати це в Emacs? Імовірно, щоб не бути повільним, він повинен працювати лише через деякий час простою.


Це копія цих [Emacs] -tagged питання по StackOverflow: stackoverflow.com/q/14764130/729907 , stackoverflow.com/q/22479140/729907 . Мабуть, це не може бути закрито як дублікат, тому я думаю, що це означає, що люди можуть копіювати мільйони інших питань, позначених SO [emacs] ... Bonjour les degats.
Дрю

@Drew: Дякую за ці вказівники. Очевидно, що нерозумно розглядати питання як дублікати на різних веб-сайтах, інакше, ніж ви вважаєте це питання "дублікатом" чогось, що задають десь в іншому місці (наприклад, на gnu.emacs.help). Так, сподівання цього сайту полягає в тому, що якщо тут будуть відтворені хороші запитання від SO, це повинно покращити якість цього веб-сайту. Я не знав, що запитання було задано на SO, але, безумовно, хороша ідея, щоб хтось із часом почав задавати (і відповідати) найкращі питання тут. Можливо, має бути спосіб автоматичної міграції питань.
ShreevatsaR

Чому? Чому тут добре відтворити "хороші запитання від ТА"? Яка мета? Ця бета-версія перевіряє, чи є сенс мати окремий сайт Emacs, на відміну від використання тегів [emacs] на SO тощо. Якщо ми "докажемо", що цей сайт має сенс, просто копіюючи запитання з інших місць, то що ми показали? Це для мене немає сенсу. І чому ми б хотіли заохочувати таку поведінку? Кому це допомагає (крім копіювальної машини)? Якби ми хотіли перенести речі (чого ми не робимо під час бета-версії), то принаймні оригінальний опитувальник та респонденти залишалися б у циклі.
Дрю

@Drew: Мета - мати гарне місце для запитань та відповідей на запитання щодо Emacs. Усі сайти SE пропонують "засівати" сайт під час (приватної) бета-версії з хорошими запитаннями та відповідями, щоб пізніше відвідувачі сайту дізналися, який тип вмісту є відповідним. У всякому разі, я прийшов сюди лише тому, що чув про цей сайт і думав задати питання, які мене турбують на даний момент; ці думки щодо міграційних питань були спонукані вашими зауваженнями в першому коментарі вище.
ShreevatsaR

ДОБРЕ. Будь ласка, віднесіть його до Meta , якщо у вас є щось більше сказати.
Дрю

Відповіді:


15

anzuПакет робить це.

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

скріншот


Спасибі! Я додав MELPA, встановив анзу і включив його, і, здається, працює. Я зачекаю, чи знайде хтось інше рішення, яке не залежить від будь-яких пакунків (принаймні, пакетів, які не є в ELPA).
ShreevatsaR

13

Ось декілька можливостей, які не дуже витончені, які мають перевагу роботи з Emacs на складі.

Якщо натиснути M-s o( isearch-occur) під час поступового пошуку, буфер Occur з'являється з поточним виразом пошуку. У верхній частині *Occur*буфера - кількість відповідних рядків.

Команда how-manyвідображає кількість випадків повторного виразу (включаючи повторні випадки). На жаль, він не інтегрований з поступовим пошуком. Ось інтеграція пошуку із підтвердженням концепції: натисніть M-s #під час пошуку, щоб показати кількість збігів.

(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 - це альтернатива пошуку, яка використовує плющ для показу огляду всіх матчів.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.