Источник информации: 1
Для пользователей emacs pro:
- Call dired для просмотра списка файлов в dir, или call find-dired, если вам нужны все подкаталоги.
- Отметьте нужные файлы. Вы можете пометить регулярным выражением, набрав «% m».
- Введите Q, чтобы вызвать dired-do-query-replace-regexp.
- Введите регулярное выражение для поиска и замените строку. Pattern ☛ шаблон регулярного выражения elisp 101
- Для каждого случая введите y, чтобы заменить, n, чтобы пропустить. Введите 【Ctrl + g】, чтобы прервать всю операцию.
- Тип! чтобы заменить все вхождения в текущем файле, не спрашивая, N, чтобы пропустить все возможные замены для остальной части текущего файла. (Только для emacs 23)
- Чтобы выполнить замену всех файлов без дополнительных запросов, введите Y. (только для Emacs 23)
- Вызовите ibuffer для просмотра списка всех открытых файлов. Введите 【* u】, чтобы отметить все несохраненные файлы, введите S, чтобы сохранить все отмеченные файлы, и D, чтобы закрыть их все.
Пошаговое руководство для начинающих Emacs
Выбрать целевые файлы
Запустите emacs, набрав «emacs» в командной строке интерфейса. (Или дважды щелкните значок Emacs, если вы находитесь в среде графического интерфейса пользователя)
Выбор файлов в каталоге
Сначала вам нужно выбрать файлы, которые вы хотите заменить. Используйте графическое меню 〖Файл ▸ Открыть каталог〗. Emacs попросит вас указать путь к каталогу. Введите путь к каталогу, затем нажмите Enter.
Теперь вам будет показан список файлов, и теперь вам нужно отметить файлы, над которыми вы хотите, чтобы регулярное выражение находило / заменяло для работы. Вы помечаете файл, перемещая курсор на нужный файл, затем нажимаете m. Снимите отметку, нажав кнопку u. (Чтобы просмотреть подкаталоги, наведите курсор на каталог и нажмите I. Содержимое подкаталога будет указано внизу.) Чтобы пометить все файлы регулярным выражением, введите «% m», а затем введите свой шаблон регулярного выражения. Например, если вы хотите пометить все файлы HTML, введите «% m», затем .html $. (Вы можете найти список команд меток в графическом меню «Метка» (это меню появляется, когда вы находитесь в режиме Dired).)
Выбор файлов в каталоге и всех его подкаталогах
Если вы хотите найти / заменить файлы внутри каталога, включая сотни подкаталогов, вот способ выбора всех этих файлов.
Позвони, найди адрес. (вы вызываете команду нажатием 【Alt + x】). Затем введите имя каталога, Users / Users / mary / myfiles
Примечание: если вы используете emacs на неграфическом текстовом терминале unix, и если 【Alt + x not не работает, эквивалентный ход клавиши 【Esc x】.
Emacs спросит вас с приглашением «Запустить поиск (с аргументами):». Если вам необходимо выполнить замену всех файлов HTML, введите -name "* html". Если вам не важен тип файла, а просто все файлы в этом каталоге, укажите «-type f».
Теперь отметьте файлы, как описано выше.
Интерактивный поиск / замена
Теперь вы готовы сделать интерактивную замену. Для простоты, скажем, вы просто хотите заменить слово «быстрый» на «супер». Теперь вызовите dired-do-query-replace-regexp. Он запросит у вас строку регулярного выражения и строку замены. Введите «быстрый», введите, затем «супер».
Теперь emacs будет использовать ваш шаблон и проверять файлы, а также останавливаться и показывать вам каждый раз, когда происходит совпадение. Когда это произойдет, emacs предложит вам, и вы можете внести изменения или пропустить изменение. Чтобы внести изменения, введите y. Чтобы пропустить, введите n. Если вы просто хотите, чтобы emacs продолжал вносить все подобные изменения в текущий файл, введите!.
Если вы хотите отменить всю операцию без сохранения внесенных изменений, введите 【Ctrl + g】, затем выйдите из emacs с помощью меню 〖Файл ▸ Выйти из Emacs〗.
Сохранение измененных файлов
Теперь, после того, как вы прошли вышеописанное испытание, вам нужно сделать еще один шаг.о, и это сохраняет измененные файлы.
Если вы используете emacs версии 22 или новее, затем вызовите ibuffer, чтобы перейти в режим просмотра списка буферов, затем введите 【* u】, чтобы отметить все несохраненные файлы, затем введите S, чтобы сохранить их все. (это shift-s)
Если вы используете emacs версии 21, то вы можете сделать это: вызвать списочные буферы, затем переместить курсор к файлу, который вы хотите сохранить, и набрать s. Он пометит файл для последующего действия сохранения. Наберите u, чтобы снять отметку. Как только вы закончите, введите x, чтобы выполнить сохранение всех файлов, помеченных для сохранения. (в emacs открытый файл называется «буфер». Не обращайте на это внимания.)
В качестве альтернативы вышеуказанным опциям вы также можете вызвать save-some-buffers 【Ctrl + x s】. Затем emacs отобразит каждый несохраненный файл и спросит, хотите ли вы его сохранить.
Примечание: регулярное выражение в emacs не такое же, как в Perl или Python, но похожее. Сводная информация и общие шаблоны приведены в разделе: Emacs Regex.