Алексей Отт
Что такое emacs?
emacs — один из наиболее мощных и широко распространённых редакторов, используемых в мире UNIX. По популярности он соперничает с редактором vi и его клонами.
В зависимости от ситуации, emacs может быть:
-
текстовым редактором;
-
программой для чтения почты и новостей Usenet;
-
интегрированной средой разработки (IDE);
-
операционной системой;
-
всем, чем угодно.
Всё это разнообразие достигается благодаря архитектуре emacs, которая позволяет расширять возможности редактора при помощи языка Emacs Lisp. На языке C написаны лишь самые базовые и низкоуровневые части emacs, включая полнофункциональный интерпретатор языка Lisp. Таким образом, emacs имеет встроенный язык программирования, который может использоваться для настройки, расширения и изменения поведения редактора. В действительности, большая часть того редактора, с которым пользователи emacs работают в наши дни, написана на языке Lisp.
Первая версия редактора emacs была написана в 70-х годах 20-го столетия Richard Stallman (Ричардом Столманом) как набор макросов для редактора TECO. В дальнейшем, уже будучи основателем Фонда Свободного программного обеспечения Free Software Foundation и проекта GNU, Столман разработал GNU Emacs в развитие оригинального emacs и до сих пор сопровождает эту программу. Вы можете подробнее ознакомиться с историей редактора, прочитав статью, располагающуюся по адресу http://www.wikipedia.org/wiki/Emacs.
emacs является одним из старейших редакторов. Он использовался тысячами программистов на протяжении последних 20 с лишним лет, для него создано много дополнительных пакетов расширений. Эти дополнения позволяют делать с помощью emacs такие вещи, которые Столман, вероятно, даже не считал возможными в начале своей работы над редактором. Более подробно я расскажу о них в следующих разделах.
Разновидности emacs
Существует две основных разновидности emacs — GNU Emacs и XEmacs. GNU Emacs — это развитие оригинальной версии emacs, написанной Столманом, а XEmacs — это версия с некоторыми добавлениями к интерфейсу и языку Emacs Lisp. О причинах, по которым образовалось две версии, можно прочесть по этому адресу. В большинстве случаев их поведение похоже друг на друга, но есть и некоторые отличия. Поэтому некоторые пакеты расширений могут работать только с конкретной версией emacs.
Кроме двух основных версий существует и множество других редакторов, считающихся вариантами emacs.
В данном документе я буду рассказывать, прежде всего, о GNU Emacs, входящем в поставку Junior. Однако большая часть сказанного применима и для XEmacs, а также для версий emacs в других дистрибутивах Linux.
Основы работы с emacs
Используемая терминология
В этом разделе описываются термины emacs, с которыми вы встретитесь при использовании редактора.
- Буферы и файлы
-
Буфер — это основная единица редактирования; один буфер соответствует одному куску редактируемого текста. Вы можете иметь несколько буферов, но в каждый конкретный момент вы редактируете только один выбранный буфер. При этом, разумеется, если вы используете несколько окон, то видимыми могут быть несколько буферов. Чаще всего буферы обращаются к какому-либо файлу, считывая данные из файла в буфер, или записывая данные из буфера в файл.
Вы встретите термин «буфер» в документации по emacs, сообщениях программы, описаниях режимов и пакетов. Просто имейте в виду, что при работе с файлами буфер означает «копию файла, которая находится в памяти в данный момент». Однако необходимо отметить, что буфер не всегда соответствует какому-либо файлу на диске. Очень часто emacs создаёт буферы в результате выполнения ваших команд. Такие буферы могут содержать вывод команды, список для выбора вариантов и другую информацию.
- Точка, область и метка
-
Точка (point) — это место в буфере, в котором происходит вставка или удаление данных. Считается, что точка находится между двумя знаками, а не на каком-то одном из них. Например, если курсор находится на букве «h» в слове «the», то точка находится между «t» и «h». Курсор терминала показывает положение точки.
Как и другие современные редакторы, emacs позволяет выполнять разные действия над фрагментами текущего буфера — изменение отступа, проверку орфографии, переформатирование, вырезание, копирование, вставку и т.д. Вы можете подсветить (или «пометить») блок текста, используя клавиатуру или мышь, а затем выполнить операцию только над выделенным блоком. В emacs такой блок текста называется область (region). Область — это текст между точкой и меткой.
Метка указывает на позицию в тексте. Она определяет один конец области, в то время как точка находится на другом конце области. Многие команды работают с текстом целиком от точки до метки. Каждый буфер имеет свою метку.
- Окна и фреймы
-
Окно в emacs — это область экрана, в которой отображается буфер. Когда emacs запускается, у вас на экране отображается одно окно. При обращении к некоторым функциям emacs (таким, как оперативная справка и интерактивная документация) часто (временно) открываются дополнительные окна на экране emacs.
Окна emacs не имеют ничего общего с окнами графической среды X Window. Одно окно X Window может быть разбито на несколько окон в смысле emacs, в каждом из которых отображается отдельный буфер. Однако вы можете открывать для отображения буферов emacs и дополнительные окна X, например, при сравнении двух файлов. Эти новые окна X в жаргоне emacs называются фреймами.
Фрейм (frame) — это отдельное окно используемой оконной системы, в котором отображаются одно или несколько окон emacs. При этом несколько фреймов, открытых одновременно, являются частью одного сеанса emacs.