Emacs

Emacs возможно является наиболее мощным редактором из существующих. Он может делать абсолютно все, и его возможности могут расти бесконечно благодаря встроенному языку программирования на основе lisp. С помощью Emacs вы можете бродить по сети интернет, читать почту, принимать участие в группах новостей usenet, варить кофе и так далее. Однако то, что вы сможете делать в нем к концу прочтения этого раздела, будет ограничено открытием Emacs, редактированием одного или нескольких файлов, сохранением их и выходом из Emacs. Что ж, неплохо для старта.

Краткое Представление

Вызов Emacs относительно прост:

emacs [file] [file...]

Emacs откроет каждый файл, введенный как аргумент в буфер, (максимум до двух видимых буферов в одно и тоже время), или создаст буфер с именем *scratch*, если вы не указали файла. Если вы находитесь в X, то вам также будет доступно меню, но в этом разделе мы будем работать только с клавиатурой.

Начало

Пришло время заняться практикой. Как показано в примере, давайте откроем два файла file1 и file2. Если эти файлы не существуют, они будут созданы сразу, как только вы что-нибудь напишите в них:

$ emacs file1 file2

Вы увидите окно, показанное здесь Рисунок 4.1. Emacs, редактирование двух файлов одновременно.

Рисунок 4.1. Emacs, редактирование двух файлов одновременно

Emacs, редактирование двух файлов одновременно

Как вы видите, были созданы два буфера: по одному на каждый файл. Внизу экрана (где вы видите (New file)), у вас находится третий буфер, который называется мини-буфер. Самостоятельно в него зайти нельзя, только если вы будете приглашены программой Emacs во время интерактивных операций. Чтобы изменить текущий буфер, наберите Ctrl+x o. Вы можете печатать текст как в “нормальном”редакторе, удаляя символы по клавишам DEL или Backspace.

Для перемещения курсора вы можете использовать клавиши со стрелками, а также такие комбинации клавиш: Ctrl+a перейти в начало строки, Ctrl+e перейти в конец строки, Alt+< перейти к началу буфера и Alt+> перейти в конец буфера. Есть много других комбинаций, даже для каждой клавиши со стрелкой [10].

Как только вам понадобится сохранить изменения, сделанные в файле, наберите Ctrl+x Ctrl+s, или, если вам нужно сохранить содержимое буфера в другой файл, наберите Ctrl+x Ctrl+w и Emacs спросит у вас имя файла куда записать содержимое буфера. Вы можете использовать заполнение чтобы сделать это.

Обработка Буферов

При необходимости вы можете отобразить только один буфер на экране. Вот два способа как это сделать:

  • вы находитесь в буфере, который надо спрятать: наберите Ctrl+x 0;

  • вы находитесь в буфере, который вам нужно оставить на экране, наберите Ctrl+x 1.

Теперь два способа как восстановить буфер на экране:

  • наберите Ctrl+x b и введите имя буфера, который вам нужен,

  • наберите Ctrl+x Ctrl+b, тогда будет открыт новый буфер, называемый *Buffer List*; вы можете передвигаться по этому буферу используя последовательность Ctrl+x o, затем выберите необходимый буфер и нажмите клавишу Enter, или можно по-другому: просто наберите имя буфера в мини-буфере. Буфер *Buffer List* уберется в фон как только вы сделаете выбор.

Если вы уже закончили работу с файлом и хотите избавиться от связанного буфера, наберите Ctrl+x k. Emacs здесь спросит вас какой буфер следует закрыть. По умолчанию это имя того буфера, в котором вы находитесь. Если вы хотите закрыть другой буфер, введите его имя непосредственно или нажмите TAB: Emacs в этом случае откроет еще один буфер с именем *Completions* (заполнение), где будет выведен список возможных вариантов. Подтвердите выбор клавишей Enter.

Также вы можете восстановить два видимых буфера на экране в любое время. Для этого наберите Ctrl+x 2. По умолчанию, вновь созданный буфер будет копией текущего буфера (в котором вы, например, сможете редактировать большой файл в разных местах “одновременно”), и вы можете перемещаться между буферами как было описано выше.

Вы можете открывать новые файлы в любое время используя Ctrl+x Ctrl+f. В этом случае Emacs спросит у вас имя файла, и здесь опять же возможно заполнение.

Копирование, Вырезание, Вставка, Поиск

Представьте, что мы находимся в такой ситуации Рисунок 4.2. Emacs, перед тем как копировать текстовый блок.

Рисунок 4.2. Emacs, перед тем как копировать текстовый блок

Emacs, перед тем как копировать текстовый блок

Сначала нужно выделить блок, который вы хотите скопировать. В X это можно сделать мышью и выбранная область будет подсвечена. Но мы по-прежнему находимся в текстовом режиме :-). В данном случае мы хотим скопировать целое предложение. Во-первых, нужно сделать отметку в начале области. Предполагая, что курсор находится на позиции как показано на картинке выше, сначала нажмите Ctrl+SPACE (Control + пробел); после этого Emacs сгенерирует сообщение Mark set в мини-буфере. Затем переместитесь в начало строки, нажав Ctrl+a. Область, выделенная для копирования или вырезания, является всей областью между отметкой и текущей позицией курсора, в нашем случае - целая строка. Затем наберите Alt+w (для копирования) или Ctrl+w (для вырезания). Если вы копируете, Emacs сразу вернет курсор на позицию отметки так, что вы сможете увидеть выделенную область.

Теперь перейдите в буфер, в который вы хотите скопировать текст и наберите Ctrl+y чтобы получить то, что отображено на Рисунок 4.3. Emacs, после того, как блок скопирован.

Рисунок 4.3. Emacs, после того, как блок скопирован

Emacs, после того, как блок скопирован

Фактически все, что вы только что сделали, это скопировали текст в kill ring программы Emacs; этот kill ring содержит все скопированные или вырезанные области с момента запуска Emacs. Любые свежескопированные или свежевырезанные области находятся вверху kill ring. Последовательность Ctrl+y только “вставляет” область в начало . Если вы хотите получить доступ к другим областям, жмите Ctrl+y, затем Alt+y пока не получите желаемый текст.

Для поиска текста зайдите в необходимый буфер и наберите Ctrl+s. В результате Emacs спросит что нужно искать. Для начала поиска подобной строки останьтесь в текущем буфере и наберите Ctrl+s снова. Когда Emacs достигнет конца буфера и больше не найдет совпадений, вы можете набрать Ctrl+s снова и перезапустить поиск с начала буфера. Нажатие Enter останавливает поиск.

Для поиска и замены наберите Alt+%. Emacs спросит какую строку искать, на что заменять и будет спрашивать подтверждение для каждого найденного совпадения.

Заключительная и очень полезная вещь: Ctrl+x u возвращает предыдущую операцию. Вы можете вернуться назад на любое количество операций.

Выход из Emacs

Горячее сочетание клавиш для этого: Ctrl+x Ctrl+c. Если у вас есть несохраненные данные в буферах, Emacs спросит хотите ли вы сохранить изменения, произведенные в буферах.



[10] Emacs была разработана для работы на великом множестве машин, некоторые из которых даже не имеют клавиш со стрелками. Это также справедливо и для Vi.