Источник информации: 1
Для пользователей emacs pro:
- Вызовите dired, чтобы вывести список файлов в dir, или вызовите find-dired, если вам нужны все подкаталоги.
- Отметьте нужные файлы. Вы можете пометить регулярным выражением, набрав «% m».
- Введите Q, чтобы вызвать dired-do-query-replace-regexp.
- Введите регулярное выражение поиска и замените строку. Pattern ☛ шаблон регулярного выражения elisp〕
- Для каждого случая введите 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 / 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, используя меню 〖File ▸ Exit Emacs〗.
Сохранение измененных файлов
Теперь, после того, как вы прошли вышеописанное испытание, вам нужно сделать еще один шаг - сохранить измененные файлы.
Если вы используете emacs версии 22 или новее, затем вызовите ibuffer, чтобы перейти в режим просмотра списка буферов, затем введите 【* u】, чтобы отметить все несохраненные файлы, затем введите S, чтобы сохранить их все. (это shift-s)
Если вы используете emacs версии 21, то вы можете сделать это: вызвать списочные буферы, затем переместить курсор к файлу, который вы хотите сохранить, и набрать s. Он пометит файл для последующего действия сохранения. Наберите u, чтобы снять отметку. Как только вы закончите, введите x, чтобы выполнить сохранение всех файлов, помеченных для сохранения. (В emacs открытый файл называется «буфер». Не обращайте на это внимания.)
В качестве альтернативы вышеуказанным опциям вы также можете вызвать save-some-buffers 【Ctrl + xs】. Затем emacs отобразит каждый несохраненный файл и спросит, хотите ли вы сохранить его.
Примечание: регулярное выражение в emacs не такое же, как в Perl или Python, но похожее. Сводная информация и общие шаблоны приведены в разделе: Emacs Regex.