Відповіді:
Дотримуючись вбудованих команд 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
.
.
це регулярний вираз, який відповідає всім файлам.