Джерело інформації: 1
Для користувачів emacs pro:
- Викличте перенаправлені, щоб перелічити файли в dir, або зателефонуйте, якщо знайти всі підкаталоги.
- Позначте потрібні файли. Ви можете позначити повторним виразом, ввівши 【% m】.
- Введіть Q для виклику dired-do-query-substitu-regexp.
- Введіть свій регекс пошуку та замініть рядок. 〔☛ загальна схема виразного еліпса〕
- У кожному випадку введіть y для заміни, n для пропуску. Наберіть 【Ctrl + g】, щоб перервати всю операцію.
- Тип! щоб замінити всі події в поточному файлі без запитання, N, щоб пропустити всю можливу заміну на решту поточного файлу. (N - лише emacs 23)
- Для заміни всіх файлів без додаткового запитання введіть Y. (лише Emacs 23)
- Зателефонуйте до ibuffer, щоб перелічити всі відкриті файли. Наберіть 【* u】, щоб позначити всі збережені файли, введіть S, щоб зберегти всі позначені файли, введіть D, щоб закрити їх усі.
Покрокове керівництво для початківців Emacs
Виберіть цільові файли
Запустіть emacs, ввівши “emacs” у інтерфейсі командного рядка. (Або двічі клацніть піктограму Emacs, якщо ви перебуваєте в середовищі графічного інтерфейсу користувача)
Вибір файлів у каталозі
Спочатку потрібно вибрати файли, для яких потрібно зробити заміну. Скористайтесь графічним меню 〖Файл ▸ Відкрити каталог〗. Emacs попросить вас про шлях до каталогу. Введіть шлях до каталогу, а потім натисніть Enter.
Тепер вам буде показаний список файлів, і тепер вам потрібно позначити файли, над якими ви хочете, щоб регекс знаходив / заміни працював. Ви позначаєте файл, перемістивши курсор на потрібний файл, потім натисніть m. Зніміть позначку, натиснувши u. (Щоб перелічити підкаталоги, перемістіть курсор до каталогу та натисніть i. Вміст підкаталогу буде вказано внизу.) Щоб позначити всі файли шляхом регулярного вираження, введіть 【% m】, а потім введіть свій шаблон регулярного вираження. Наприклад, якщо ви хочете позначити всі HTML-файли, введіть 【% m】 тоді .html $. (Ви можете знайти список команд для позначення у графічному меню "Позначити" (це меню з'являється, коли ви перебуваєте в переведеному режимі).)
Вибір файлів у каталозі та всіх його підкаталогах
Якщо ви хочете знайти / замінити файли всередині каталогу, включаючи сотні підкаталогів, ось метод вибору всіх цих файлів.
Зателефонуйте, знайшовшись. (Ви викликаєте команду, натискаючи 【Alt + x】) Потім введіть ім'я каталогу, ⁖ / Користувачі / mary / myfiles
Примітка: якщо ви використовуєте emacs на не графічному текстовому терміналі unix, і якщо 【Alt + x】 не працює, еквівалентний штрих ключа є is Esc x】.
Emacs запитає вас із запитом "Виконати пошук (з аргументами):". Якщо вам потрібно зробити заміну на всіх HTML-файлах, введіть -name "* html". Якщо вам не байдуже, який тип файлу, а просто всі файли в цьому режимі, то дайте "-типу f"
Тепер позначте файли, як описано вище.
Інтерактивний пошук / заміна
Тепер ви готові замінити інтерактивну пошук. Для простоти скажімо, що ви просто хочете замінити слово "швидкий" на "супер". Тепер зателефонуйте dired-do-query-substitu-regexp. Він запропонує вам ввести рядок regex та рядок заміни. Введіть "швидкий", введіть, а потім "супер".
Тепер, emacs буде використовувати ваш шаблон і перевіряти файли, а також зупинятись та показувати вам, коли відбудеться збіг. Коли це станеться, emacs підкаже вам, і у вас є вибір внести зміни або пропустити зміни. Щоб внести зміни, введіть y. Щоб пропустити, введіть n. Якщо ви просто хочете, щоб Emacs продовжував і вносив усі такі зміни в поточний файл, введіть !.
Якщо ви хочете скасувати всю операцію без збереження внесених змін, введіть 【Ctrl + g】, а потім вийдіть з emacs за допомогою меню 〖Файл ▸ Вийти з Emacs〗.
Збереження змінених файлів
Тепер, після того, як ви пройшли вищевказане випробування, вам потрібно зробити ще один крок, і це збереження змінених файлів.
Якщо ви використовуєте emacs версії 22 або новішої версії, то зателефонуйте ibuffer, щоб перейти в режим переліку буфера, а потім наберіть 【* u】, щоб позначити всі збережені файли, а потім введіть S, щоб зберегти їх усі. (це зрушення)
Якщо ви використовуєте emacs версії 21, ви можете зробити це: буфери списку викликів, а потім перемістити курсор у файл, який ви хочете зберегти, і введіть s. Він позначить файл для подальшої дії збереження. Введіть u, щоб зняти позначку. Після завершення введіть x, щоб виконати збереження всіх файлів, позначених для збереження. (в emacs відкритий файл називається "буфер". Ігноруйте інші речі там.)
Альтернативно вищевказаним параметрам ви також можете зателефонувати save-some-buffers 【Ctrl + xs】. Потім emacs покаже кожен збережений файл і запитає, чи хочете ви його зберегти.
Примітка: регулярний вираз emacs не такий, як Perl чи Python, але подібний. Для підсумків та загальних моделей див.: Emacs Regex.