Допустим, у меня открыто 10 буферов, и я хочу найти все вхождения blah
во всех 10 буферах. Как бы я это сделал?
Придерживаясь встроенных команд Emacs, вы можете использовать multi-occur
или multi-occur-in-matching-buffers
( M-x multi-occur- TAB RET
). multi-occur
дает вам прекрасный контроль, запрашивая каждый буфер для использования, но это утомительно. multi-occur-in-matching-buffers
позволяет вам ввести регулярное выражение для сопоставления имен файлов (оно ищет только в буферах, которые посещают файлы); введите .
в качестве файла регулярное выражение для поиска во всех буферах, которые посещают файл.
Есть также функции для инкрементного поиска по списку буферов или файлов, но они утомительны, так multi-occur
как требуют перечисления буферов или файлов один за другим.
Для поиска во всех файлах в каталоге или файлах, соответствующих определенным шаблонам, независимо от того, открыты они или нет, вы можете использовать grep
. Есть варианты rgrep
и grep-find
по подкаталогам искать рекурсивно.
.
это регулярное выражение для соответствия всем файлам.В дополнение к тому, что упоминали другие - здесь есть два других ресурса для этого.
M-x multi-isearch-buffers
илиM-x multi-isearch-buffers-regexp
(vanilla Emacs) - добавочный поиск по нескольким буферам.Если вы используете Icicles, вы можете использовать
icicle-search
(илиicicle-occur
любое другое количествоicicle-search
специализаций) для поиска в нескольких файлах или буферах.(В дополнение к поиску и замене в произвольных буферах , конечно, есть команды, которые делают это по нескольким файлам .
grep
Например, другие упоминали . И, конечно, естьA
в Dired. Но вы не спрашивали о поиске файлов.)источник
Это можно сделать с помощью команды helm
helm-multi-occur
. Вы можете установить helm из melpa и затем вызвать команду следующим образом:Это откроет
helm-multi-occur
и затем выберет все буферы. Вместо того,M-a
чтобы использовать для маркировки всех буферов, вы можете по желанию выбрать интересующие буферы по одному. Перемещайтесь вверх и вниз по списку с помощьюC-n
иC-p
и отмечайте буферы с помощьюC-SPC
. Когда все буферы помечены, нажмите,RET
чтобы принять помеченные буферы и начать поиск.Если вы добавите следующее в файл инициализации:
Затем вы можете связать команду
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
, запустите его и взгляните на меню Mark, чтобы увидеть все способы, которыми вы можете выбрать набор буферов для работы.источник
Вот еще один способ с рулем:
M-x helm-mini M-a C-s blah
. После вызоваhelm-mini
,M-a
будет отмечать все буфера открытия , тоC-s blah
будет делать мульти происходит на отмеченных буферах.источник
Также решение с использованием helm-mode - с
helm-swoop
.использование
затем для поиска во всех открытых буферах наберите
затем просто введите
blah
для поиска во всех буферах. В другом окне будут отображаться все вхождения.Кроме того, вы можете просто набрать
затем отметьте все буферы, которые вы хотите найти,
M-SPC
илиC-SPC
нажмитеRET
иblah
.источник