В этом разделе описываются термины 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.
Чтобы запустить Emacs, просто наберите в командной строке команду emacs (или xemacs, если вы хотите посмотреть на этот вариант Emacs). После запуска появится окно (фрейм в терминах Emacs, смотрите раздел “Используемая терминология”) изображенное на рисунке Рисунок 6.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 включена обширная справка (для описания функций и клавиш вызова справки смотрите таблицу Таблица 6.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 был спроектирован таким образом, чтобы быть максимально переносимым и работать на любых терминалах. Поэтому у него имеются собственные привязки к клавишам для команд перемещения курсора (точки) в буфере. В таблице Таблица 6.1. Клавиши для перемещения в буфере перечислены основные команды перемещения курсора в буфере Emacs.
Таблица 6.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, кроме перечисленных клавиш, также работают и привычные для пользователей персональных компьютеров клавиши управления курсором (например, стрелки).
В таблицах Таблица 6.2. Команды работы с текстом — Таблица 6.7. Прочие основные команды Emacsперечислены наиболее часто используемые команды, их действие, а также сочетания клавиш, которые используются для их быстрого вызова. Полная форма команды, приведенная в столбце ``Команда'', используется для запуска с помощью префиксного сочетания M-x, например M-x save-buffer.
Таблица 6.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 | Выравнивает текст в текущем параграфе |
Таблица 6.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 | Выравнивание строк выделенного фрагмента |
Таблица 6.4. Команды поиска и замены
Сочетание клавиш | Команда | Действие |
---|---|---|
C-s | isearch-forward | Поиск строки вперед |
C-r | isearch-backward | Поиск строки в обратном направлении |
replace-string | Поиск и замена строки | |
replace-regexp | Поиск и замена с использованием регулярного выражения | |
M-% | query-replace | Поиск и замена с запросом |
Таблица 6.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 | Переход в другое окно |
Таблица 6.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) |
Таблица 6.7. Прочие основные команды Emacs
Сочетание клавиш | Команда | Действие |
---|---|---|
M-xcommand | Выполнить команду Emacs с именем command | |
C-xu | undo | Отменить последнюю операцию |
C-xrm | bookmark-set | Установить закладку. Полезно при поиске |
C-xrb | bookmark-jump | Перейти к закладке |