В этом разделе описывается общая терминология Emacs, с которой вы встретитесь при использовании редактора и чтении документации к нему.
В отличие от других редакторов, при открытии файла Emacs не оставляет его открытым на все время работы с ним. Вместо этого Emacs считывает файл в буфер, который находится в оперативной памяти. В процессе редактирования и другой работы с буфером данные на диске не изменяются. Только когда вы сохраняете данные, буфер обновляет данные на диске. В этом подходе есть свои достоинства и недостатки, но для целей данного введения достаточно лишь понимать, как это работает.
Как следствие этого, вы встретите термин ``буфер'' в документации по Emacs, сообщениях программы, описаниях режимов и пакетов. Просто имейте в виду, что при работе с файлами буфер означает ``копию файла, которая находится в памяти в данный момент''. Однако необходимо отметить, что буфер не всегда соответствует какому-либо файлу на диске. Очень часто Emacs создает буфера в результате выполнения ваших команд. Такие буфера могут содержать вывод команды, список для выбора вариантов и другую информацию.
В жаргоне Emacs вы часто встретите упоминания термина точка (point). Говоря попросту, точка — это позиция курсора. Настоящее различие между курсором и точкой, скорее всего, неактуально для начинающего пользователя Emacs. Но если вы любопытны, вы можете представлять себе это различие следующим способом. Курсор — это наглядное представление точки. Курсор всегда находится в позиции определенного символа текущего буфера. С другой стороны, точка ``живет'' между символами в этом буфере. Поэтому можно сказать, что если курсор находится на букве `h' в слове ``the'', то точка находится между `t' и `h'.
Подобно многим современным редакторам, Emacs позволяет выполнять над фрагментами текущего буфера различные операции — изменение отступа, проверку орфографии, переформатирование, вырезание, копирование, вставку и т.д. Вы можете подсветить (или ``пометить'') блок текста, используя клавиатуру или мышь, а затем выполнить операцию только над выделенным блоком. В Emacs такой блок текста называется область (region).
Окно в Emacs — это область экрана, в которой отображается буфер. Когда Emacs запускается, у вас на экране отображается одно окно. При обращении к некоторым функциям Emacs (таким, как оперативная справка и интерактивная документация) часто (временно) открываются дополнительные окна на экране Emacs.
Окна Emacs не имеют ничего общего с окнами графической среды X Window. Одно окно X Window может быть разбито на несколько окон в смысле Emacs, в каждом из которых отображается отдельный буфер. Однако вы можете открывать для отображения буферов Emacs и дополнительные окна X, например, при сравнении двух файлов. Эти новые окна X в жаргоне Emacs называются фреймы (frames). О фреймах рассказано в следующем разделе.
В Emacs фрейм — это отдельное окно X Window, в котором отображаются один или несколько буферов Emacs. При этом несколько фреймов, открытых одновременно, являются частью одного сеанса Emacs. Создание нового фрейма во многих отношениях (но не полностью) похоже на то, что происходит, когда вы нажимаете Alt-N в Netscape Navigator, чтобы открыть новое окно.
Чтобы запустить Emacs, просто наберите в командной строке команду emacs (или xemacs, если вы хотите посмотреть на этот вариант Emacs). После запуска появится окно (фрейм в терминах Emacs, смотрите раздел “Используемая терминология”) изображенное на рисунке Рисунок 1.1. Вид основного окна GNU Emacs.
Как видно на рисунке, этот фрейм состоит из следующих частей:
полосы меню, предоставляющей быстрый доступ к основным командам Emacs, а также к справочной информации;
основного окна, в котором производится редактирование текста. Это окно можно разделить на несколько окон. Помимо редактирования текста, основное окно используется для отображения данных теми пакетами, которые не связаны с редактированием, например пакетом gnus для чтения новостей usenet;
строки состояния, которая используется для отображения такой информации, как состояние буфера (изменен/не изменен), название буфера, текущее время, используемые режимы, а также позиция точки в буфере;
мини-буфера, который используется для ввода различных команд и их параметров, а также для отображения информации о производимых действиях.
После запуска Emacs без каких-либо параметров в основном окне отображается буфер *scratch*, который используется для оценки выражений Emacs Lisp, а также для заметок, которые вы не хотите сохранять. Этот буфер не сохраняется автоматически, так что будьте осторожны!
Чтобы выйти из Emacs, просто наберите сочетание клавиш C-x C-c (C-x означает, что надо нажать клавишу x, удерживая при этом клавишу Control, это справедливо и для C-c).
Кроме того, вы можете для выхода выбрать пункт Exit Emacs из меню File.
В поставку GNU Emacs включена обширная справка (для описания функций и клавиш вызова справки смотрите таблицу Таблица 1.6. Команды работы со справочной системой). Кроме полного руководства по GNU Emacs, в нее входит учебник для начинающих пользователей. В состав дистрибутивов ALT Linux также включен русский перевод учебника. Для его вызова нажмите сочетание клавиш C-h t, и далее следуйте инструкциям, приведенным в появившемся тексте.
Emacs поставляется со встроенной программой чтения справки в формате Texinfo. В данном формате поставляется руководство по Emacs, руководства по пакетам расширения, а также документация по большинству программ проекта GNU. Для запуска системы Info нажмите сочетание клавиш C-h i. При работе со справочной системой Info, вы в любой момент можете нажать клавишу h и получить справку о том, как пользоваться справочной системой.
Для выполнения команд в Emacs широко используются клавиатурные сокращения. Особенно часто используются сочетания различных клавиш с клавишами Control (обозначается как C-), Meta (обозначается как M-, на клавиатурах персональных компьютеров ее роль часто играет клавиша Alt), и Shift (обозначается как S-). Эти клавиши также называются префиксными. Например, запись M-x означает, что надо нажать на клавишу x, при этом удерживая клавишу Meta (или Alt на клавиатурах персональных компьютеров).
Кроме отдельных префиксных клавиш, в Emacs используются сочетания клавиш, которые рассматриваются как префиксные. В отличии от префиксных клавиш Control, Shift и других, такие сочетания клавиш не надо удерживать когда вы нажимаете следующую клавишу. Например, сочетание C-x C-f (команда открытия файла), означает, что надо нажать на клавишу x, удерживая клавишу Control, отпустить обе клавиши, а потом нажать на клавишу f, удерживая клавишу Control.
Префиксные сочетания клавиш различаются по назначению. Например, сочетание клавиш C-x является префиксом для основных команд редактора — открытия и сохранения файлов, а также многих других важных действий. Функции, привязанные к этим клавишам, не зависят от используемого режима. Кроме этого, сочетание клавиш C-h используется для доступа к разным разделам справочной системы.
В отличие от сочетания клавиш C-x, комбинация C-c играет роль префикса для вызова функций, зависящих от используемого режима. Например, сочетание клавиш C-c C-c при редактировании исходного текста на языке С приведет к комментированию выделенного текста с помощью функции comment-region, а при редактировании файла в формате SGML приведет к вызову функции sgml-show-context, которая отображает текущее положение точки в иерархии документа.
Emacs был спроектирован таким образом, чтобы быть максимально переносимым и работать на любых терминалах. Поэтому у него имеются собственные привязки к клавишам для команд перемещения курсора (точки) в буфере. В таблице Таблица 1.1. Клавиши для перемещения в буфере перечислены основные команды перемещения курсора в буфере Emacs.
Таблица 1.1. Клавиши для перемещения в буфере
Сочетание клавиш | Команда | Действие |
---|---|---|
C-p | previous-line | Вверх на одну строку |
C-n | next-line | Вниз на строку |
C-f | forward-char | Вперед на один символ |
C-b | backward-char | Назад на один символ |
C-a | beggining-of-line | Начало строки |
C-e | end-of-line | Конец строки |
C-v | scroll-up | Вниз на одну страницу |
M-v | previous-page | Вверх на одну страницу |
M-f | next-word | Вперед на одно слово |
M-b | previous-word | Назад на одно слово |
M-< | beginning-of-buffer | В начало буфера |
M-> | end-of-buffer | В конец буфера |
C-g | keyboard-quit | Закончить (прервать) текущую операцию |
goto-line | Переход на заданную строку |
Как правило, при работе в системе X Window, кроме перечисленных клавиш, также работают и привычные для пользователей персональных компьютеров клавиши управления курсором (например, стрелки).
В таблицах Таблица 1.2. Команды работы с текстом — Таблица 1.7. Прочие основные команды Emacsперечислены наиболее часто используемые команды, их действие, а также сочетания клавиш, которые используются для их быстрого вызова. Полная форма команды, приведенная в столбце ``Команда'', используется для запуска с помощью префиксного сочетания M-x, например M-x save-buffer.
Таблица 1.2. Команды работы с текстом
Сочетание клавиш | Команда | Действие |
---|---|---|
C-d | delete-char | Удаление символа перед точкой |
M-d | kill-word | Удалить следующее слово |
C-k | kill-line | Удалить текст до конца строки |
M-k | kill-sentence | Удалить текст до конца предложения |
M-\ | delete-horizontal-space | Удалить все пробелы и знаки табуляции вокруг точки |
C-q | quoted-insert | Вставка символа, соответствующего нажатой клавише или сочетанию, даже если это управляющая последовательность |
M-q | fill-paragraph | Выравнивает текст в текущем параграфе |
Таблица 1.3. Команды работы с пометками
Сочетание клавиш | Команда | Действие |
---|---|---|
C-space | set-mark-command | Установить пометку в точке |
C-@ | set-mark-command | Установить пометку в точке |
C-xC-x | exchange-point-and-mark | Поменять местами точку и начало пометки |
mark-whole-buffer | Пометить весь буфер | |
C-w | kill-region | Удаление выделенной области в список удалений |
M-w | kill-ring-save | Копирование выделенной области в список удалений |
C-y | yank | Вставка текста из списка удалений в текущую позицию |
M-y | yank-pop | Последовательная вставка текста из списка удалений |
C-xxN | copy-to-register | Копировать отмеченный текст в регистр (N может быть буквой или цифрой, позволяя использовать множество регистров) |
C-xgN | insert-register | Вставляет в точку содержимое регистра N |
M-C-\ | indent-region | Выравнивание строк выделенного фрагмента |
Таблица 1.4. Команды поиска и замены
Сочетание клавиш | Команда | Действие |
---|---|---|
C-s | isearch-forward | Поиск строки вперед |
C-r | isearch-backward | Поиск строки в обратном направлении |
replace-string | Поиск и замена строки | |
replace-regexp | Поиск и замена с использованием регулярного выражения | |
M-% | query-replace | Поиск и замена с запросом |
Таблица 1.5. Команды работы с файлами буферами и окнами
Сочетание клавиш | Команда | Действие |
---|---|---|
C-xC-f | find-file | Открыть файл на диске |
C-xC-s | save-buffer | Сохранить буфер на диске |
C-xC-w | write-file | Сохранить буфер в файле с новым именем |
C-xC-b | list-buffers | Отобразить список открытых буферов в новом окне |
C-xb | switch-to-buffer | Переключиться в другой буфер в текущем окне |
C-xC-c | save-buffers-kill-emacs | Перед выходом из редактора запросить о необходимости сохранения измененных файлов |
C-xi | insert-file | Вставить содержимое файла в буфер в текущую позицию |
C-x0 | delete-window | Закрыть текущее окно (при этом буфер не удаляется) |
C-x1 | delete-other-windows | Закрыть все окна кроме текущего |
C-x2 | split-window-vertically | Разделить окно по горизонтали |
C-xo | other-window | Переход в другое окно |
Таблица 1.6. Команды работы со справочной системой
Сочетание клавиш | Команда | Действие |
---|---|---|
C-h? | help-for-help | Информация об использовании справочной системы |
C-ht | help-with-tutorial | Использовать интерактивный учебник |
C-hf | describe-function | Показать справку по функции |
C-hv | describe-variable | Показать справку по переменной |
C-hk | describe-key | Показать данные, о том, что делает последовательность клавиш |
C-ha | apropos | Поиск в справке по строке/регулярному выражению |
C-hF | view-emacs-FAQ | Показать Emacs FAQ |
C-hi | info | Показать документацию по Emacs (Info) |