Emacs - это, вероятно, самый мощный текстовый редактор из всех существующих. Он может делать абсолютно все, и неограниченно расширяется, благодаря своему встроенному языку программирования на базе lisp. С помощью Emacs вы можете бродить по вебу, читать почту, принимать участие в группах новостей Usenet, готовить кофе и т.п. Это не значит, что из этой главы вы узнаете, как все это делается, однако вы получите хорошие начальные знания о том, как запустить Emacs, отредактировать один или несколько файлов, сохранить их и выйти из Emacs.
Если после прочтения этого, вы захотите более подробно изучить Emacs, вы можете заглянуть сюда: Tutorial Introduction to GNU Emacs.
Запускается Emacs следующим образом:
emacs [файл1] [файл2...]
Emacs откроет каждый файл, указанный в качестве аргумента, в
отдельном буфере. Если в командной строке были указаны два файла, окно будет
автоматически разделено на два, в первом из которых будет показан последний
указанный файл, а во втором - список доступных буферов. Если вы запустите
Emacs без указания каких-либо файлов в командной строке, вы окажетесь
в буфере под названием *scratch*
. Если вы работаете в
X, будут доступны меню при помощи мыши, а если вы в текстовом режиме,
вы также можете получить доступ к меню посредством клавиши
F10, но в этой главе мы сконцентрируемся на работе с
клавиатурой без всяких меню.
А теперь пора заняться практикой. Например, давайте начнем с открытия двух
файлов: file1
и file2
. Если
эти файлы не существуют, они будут созданы после того, как вы что-нибудь
запишите в них:
$ emacs file1 file2
После выполнения этой команды, будет показано следующее окно:
Как вы можете видеть, были созданы два буфера. Также в нижней части экрана
(где вы видите (New file)
) находится третий буфер. Это
мини-буфер. Вы не можете получить к этому буферу непосредственный доступ. Вы
должны быть приглашены Emacs'ом во время интерактивных операций. Для
смены текущего буфера, введите Ctrl-X-O. Вы можете набирать
текст как в «обычном»редакторе, удаляя символы при помощи
клавиш Del или Backspace.
Для перемещения курсора вы можете использовать клавиши со стрелками, или вы можете воспользоваться следующими комбинациями клавиш: Ctrl-A для перехода в начало строки, Ctrl-E для перехода в конец строки, Alt-< или Ctrl-Home для перехода в начало буфера и Alt-> или Ctrl-End для перехода в конец буфера. Существует много других комбинаций, даже комбинации для каждой из клавиш со стрелками [10].
Как только вы готовы сохранить свои изменения на диск, наберите Ctrl-X Ctrl-S, или, если вам нужно сохранить содержимое буфера в другой файл, наберите Ctrl-X Ctrl-W. Emacs спросит у вас имя файла, в который должно быть записано содержимое буфера. При этом вы можете воспользоваться завершением.
При необходимости вы можете оставить на экране только один буфер. Для этого есть два способа:
Для восстановления буфера обратно на экран имеется два способа:
наберите 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, перед копированием текстового блока», последовательность команд
будет следующей:
Ctrl-Space
(Control
+ клавиша пробел). Emacs выведет в
мини-буфере сообщение Mark set
(Метка установлена).
Затем перейдите в начало строки, нажав
Ctrl-A. Область,
выделенная для копирования или вырезания - это вся область между отметкой и
текущим положением курсора, следовательно, данном случае это будет целая
строка текста. Доступны две последовательности команд:
Alt-W (для
копирования) или
Ctrl-W (для
вырезания). Если вы выполняете копирование, Emacs сразу вернет курсор
на позицию отметки, чтобы вы могли видеть выделенную область.
И в завершение, перейдите в буфер, в который вы хотите скопировать текст, и нажмите Ctrl-Y. При этом вы получите следующий результат:
В действительности то, что вы сейчас сделали, называется копированием текста в kill ring. Этот 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 или Ctrl-Shift--, что выполнит откат назад на предыдущую операцию. Вы можете отменить столько операций, сколько вам нужно.
Комбинация клавиш для этого - Ctrl-X Ctrl-C. Если вы не сохранили сделанные изменения, Emacs спросит у вас, хотите ли вы сохранить буферы или нет.
[10] Emacs был разработан для работы на самых разнообразных машинах, некоторые из которых оснащены клавиатурами без клавиш со стрелками. Это еще более справедливо для Vi.