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 для перехода в конец буфера. Существует много других комбинаций, даже комбинации для клавиш со стрелками [43].
Как только вы готовы сохранить свои изменения на диск, наберите Ctrl-X Ctrl-S, или, если вам нужно сохранить содержимое буфера в другой файл, наберите Ctrl-X Ctrl-W. Emacs спросит у вас имя файла, в который должно быть записано содержимое буфера. При этом вы можете воспользоваться завершением, воспользовавшись для этого клавишей Tab как в bash.
При необходимости вы можете оставить на экране только один буфер. Для этого есть два способа:
Для восстановления буфера обратно на экран имеется два способа:
наберите
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 спросит у вас имя файла, и вы вновь можете воспользоваться автозавершением, если найдете это более удобным.
Допустим, что вы находитесь в следующей ситуации Рисунок 31.2, «Emacs, перед копированием текстового блока».
Сначала вам нужно выделить блок, который
вы хотите скопировать. В этом примере мы
хотим скопировать целое предложение.
Первым шагом будет установка курсора в
начало копируемой области. При условии,
что курсор находится в той же позиции, что
и на Рисунок 31.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 спросит у вас, хотите ли вы сохранить буферы или нет.
[43] Emacs был разработан для работы на самых разнообразных машинах, некоторые из которых оснащены клавиатурами без клавиш со стрелками. Это еще более справедливо для Vi.