Поиск и замена текста
Команда поиска в большинстве версий Emacs реализована в виде, так называемого, "инкрементного поиска" ("incremental search"). Нажмите C-s и введите образец для поиска в строку минибуфера "n". По мере ввода текста курсор будет перемещаться по тексту выделяя обнаруженные с образцом совпадения.
Пример. Пусть требуется найти слово "hazel" в приведенном ниже тексте. После того, как в окне минибуфера будет напечатана буква "h", курсор перепрыгнет в следующую позицию после первой обнаруженной буквы "h" (см. рис. Результаты инкрементного поиска после ввода первого символа.).
Результаты инкрементного поиска после ввода первого символа.
После того, как будет набрана следующая буква - "a", курсор перепрыгнет в "n" слова "than" - следующую позицию после обнаруженного образца "ha" (см. рис. Результаты инкрементного поиска после ввода второго символа.).
Результаты инкрементного поиска после ввода второго символа.
Напечатайте "z" и курсор перейдет в "e" после фрагмента "haz" в слове "hazel" (см. рис. ).
Результаты инкрементного поиска после ввода третьего символа.
Если Emacs не смог найти образец в тексте, то в окне минибуфера появится соответствующее сообщение. Например, если вместо "haz" набрать "hazx", то в окне минибуфера появится сообщение:
Failing I-search: hazx |
Если искомый фрагмент найден и нужно найти следующий, нажмите C-s еще раз. Чтобы остановить процесс поиска нажмите Enter.
Другая полезная клавиша при поиске - это клавиша Backspace. Ее используют, чтобы удалить последствия последней нажатой в окне минибуфера. Например, в рассмотренной выше ситуации если нажать Backspace после нажатия "z", когда Emacs нашел фрагмент "haz", курсор перепрыгнет обратно в слово "than", обнаруженное по фрагменту "ha".
Поиск по тексту в обратном направлении осуществляется точно также, как поиск в прямом направлении, с той лишь разницей, что для запуска команды поиска нужно нажать C-r. Точно так же поиск будет осуществляться в соответствии с вводимыми в образец буквами, пока либо Emacs не сможет найти образец в тексте, либо пользователь не прервет операцию поиска нажатием клавиши Enter. Точно также для поиска в обратном направлении работает клавиша Backspace.
В редакторе Emacs есть несколько команд осуществляющих операции замены (Search and Replace). Наиболее универсальная команда query-replace запускается при нажатии комбинации M-% или из пункта меню Query Replace... (меню Edit). При нажатии M-% в окне минибуфера появляется сообщение:
Query replace: |
Query replace my fault with: |
Query replacing my fault with your fault: (? for help) |
y | Заменить найденный фрагмент и искать следующий. Тот же эффект дает нажатие пробела. |
n | Замену не проводить, искать следующий. |
q | Замену не проводить. Прекратить операцию поиска. |
! | Заменить все обнаруженные в тексте фрагменты без дополнительного подтверждения. |