Відповіді:
Дотримуючись вбудованих команд Emacs, ви можете використовувати multi-occurабо multi-occur-in-matching-buffers( M-x multi-occur- TAB RET). multi-occurдає точний контроль за допомогою кожного буфера використовувати, але це втомливо. multi-occur-in-matching-buffersдозволяє ввести regexp для відповідності імен файлів (він здійснює пошук лише у буферах, які відвідують файли); введіть .як файл regexp для пошуку у всіх буферах, які відвідують файл.
Існують також функції для поступового пошуку в списку буферів або файлів, але вони стомлюють, як multi-occurвони вимагають перерахування буферів або файлів один за одним.
Для пошуку у всіх файлах у каталозі або файлах, що відповідають певним шаблонам, відкриті вони чи ні, ви можете використовувати grep. Існують варіанти rgrepта grep-findрекурсивно шукати підкаталоги.
Окрім того, що згадували інші - ось ще два ресурси для цього.
M-x multi-isearch-buffersабо M-x multi-isearch-buffers-regexp(ванільний Emacs) - поступовий пошук у кількох буферах.
Якщо ви використовуєте Icicles, то ви можете використовувати icicle-search(або icicle-occurабо будь-яку кількість інших icicle-searchспеціалізацій) для пошуку в декількох файлах або буферах.
(Окрім пошуку та заміни в довільних буферах , звичайно, є команди, які роблять це для кількох файлів . Інші згадували grep, наприклад. І, звичайно, є Aв Dired. Але ви не питали про пошук файлів.)
Це можна зробити за допомогою керма за допомогою команди helm-multi-occur. Ви можете встановити штурвал від melpa, а потім викликати команду наступним чином:
M-x helm-multi-occur RET M-a RET
Це відкриється, helm-multi-occurа потім виберіть усі буфери. Замість того, M-aщоб використовувати для позначення всіх буферів, ви можете додатково вибрати буфери, що цікавлять один за одним. Перейдіть вгору і вниз по списку з C-nі C-pі мітки буферів C-SPC. Після позначення всіх буферів натисніть, RETщоб прийняти позначені буфери, і почніть пошук.
Якщо ви додасте в файл init таке:
(require 'helm-regexp)
(eval-after-load "helm-regexp"
'(setq helm-source-moccur
(helm-make-source "Moccur" 'helm-source-multi-occur :follow 1)))
;; (source: http://stackoverflow.com/q/14726601)
(defun my-helm-multi-occur-buffers ()
"multi-occur in all buffers backed by files."
(interactive)
(helm-multi-occur
(delq nil
(mapcar (lambda (b)
(when (buffer-file-name b) (buffer-name b)))
(buffer-list)))))
Потім ви можете зв'язати команду, my-helm-multi-occur-buffersщоб зробити багатопотокові у всіх буферах, які підтримуються файлами.
helm-swoopпакет MELPA. Він забезпечує цю функціональність і дозволяє швидко редагувати результати.
swiper-allз пакету swiper надається інструмент для цього. Він навіть поступовий, тому оновлюється під час введення.
Ви можете використовувати ibufferрежим для позначення буферів, які ви хочете шукати. Дзвінок ibuffer-do-isearch(прив’язаний до M-s a C-sзамовчування) для пошуку тексту або ibuffer-do-isearch-regexpдля пошуку регулярного виразу.
Якщо ви не знайомі ibuffer, запустіть його та перегляньте меню «Позначити», щоб побачити всі способи вибору набору буферів, якими можна працювати.
Ось ще один спосіб з кермом: M-x helm-mini M-a C-s blah. Після виклику helm-mini, M-aвідзначатиме все буфера відкриття , то C-s blahбуде робити мульти відбувається на зазначених буферах.
Також рішення з використанням кермового режиму є з helm-swoop.
Використовуйте
M-x helm-swoop RET
потім для пошуку у всіх відкритих буферах введіть
M-i
тоді просто введіть blahдля пошуку в усіх буферах. У іншому вікні відобразяться всі події.
Крім того, ви можете просто ввести
M-x helm-multi-swoop
потім позначте всі буфери, за якими ви хочете шукати, M-SPCабо C-SPCнатисніть RETі шукайте blah.
.це регулярний вираз, який відповідає всім файлам.