Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.




Emacs для начинающих часть 2

Автор : Алексей Отт

Основы работы с Emacs

Используемая терминология

В этом разделе описывается общая терминология Emacs, с которой вы встретитесь при использовании редактора и чтении документации к нему.

Буфера и файлы

В отличие от других редакторов, при открытии файла Emacs не оставляет его открытым на все время работы с ним. Вместо этого Emacs считывает файл в буфер, который находится в оперативной памяти. В процессе редактирования и другой работы с буфером данные на диске не изменяются. Только когда вы сохраняете данные, буфер обновляет данные на диске. В этом подходе есть свои достоинства и недостатки, но для целей данного введения достаточно лишь понимать, как это работает.

Как следствие этого, вы встретите термин ``буфер'' в документации по Emacs, сообщениях программы, описаниях режимов и пакетов. Просто имейте в виду, что при работе с файлами буфер означает ``копию файла, которая находится в памяти в данный момент''. Однако необходимо отметить, что буфер не всегда соответствует какому-либо файлу на диске. Очень часто Emacs создает буфера в результате выполнения ваших команд. Такие буфера могут содержать вывод команды, список для выбора вариантов и другую информацию.

Точка (Point) и Область (Region)

В жаргоне 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, просто наберите в командной строке команду emacs (или xemacs, если вы хотите посмотреть на этот вариант Emacs). После запуска появится окно (фрейм в терминах Emacs, смотрите раздел “Используемая терминология”) изображенное на рисунке Рисунок 1.1. Вид основного окна GNU Emacs.

Рисунок 1.1. Вид основного окна GNU Emacs

Как видно на рисунке, этот фрейм состоит из следующих частей:

  • полосы меню, предоставляющей быстрый доступ к основным командам Emacs, а также к справочной информации;

  • основного окна, в котором производится редактирование текста. Это окно можно разделить на несколько окон. Помимо редактирования текста, основное окно используется для отображения данных теми пакетами, которые не связаны с редактированием, например пакетом gnus для чтения новостей usenet;

  • строки состояния, которая используется для отображения такой информации, как состояние буфера (изменен/не изменен), название буфера, текущее время, используемые режимы, а также позиция точки в буфере;

  • мини-буфера, который используется для ввода различных команд и их параметров, а также для отображения информации о производимых действиях.

После запуска Emacs без каких-либо параметров в основном окне отображается буфер *scratch*, который используется для оценки выражений Emacs Lisp, а также для заметок, которые вы не хотите сохранять. Этот буфер не сохраняется автоматически, так что будьте осторожны!

Выход из Emacs

Чтобы выйти из 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)

Таблица 1.7. Прочие основные команды Emacs

Сочетание клавиш Команда Действие
M-xcommand   Выполнить команду Emacs с именем command
C-xu undo Отменить последнюю операцию
C-xrm bookmark-set Установить закладку. Полезно при поиске
C-xrb bookmark-jump Перейти к закладке

Режимы Emacs

Режимы Emacs — это пакеты расширения, которые изменяют поведение буферов Emacs при редактировании и просмотре текста. Режимы делятся на основные и вспомогательные.

Основные режимы определяют общее поведение редактора. Как правило, основные режимы предоставляют команды и функции для редактирования определенных типов текста. Например, существуют режимы для редактирования исходного текста программ на языках С или Perl. Обычно для конкретного буфера может одновременно использоваться только один основной режим.

Вспомогательные режимы расширяют возможности Emacs. При этом отдельный вспомогательный режим может быть использован в сочетании с разными основными режимами. В одном буфере может быть использовано несколько вспомогательных режимов. Основной и вспомогательные режимы, действующие для данного буфера, отображаются в строке статуса.

Пакеты, входящие в состав дистрибутивов ALT Linux, обычно поставляются со сценариями, которые подключают режимы с определенными параметрами по умолчанию. Вы можете настроить конкретные параметры для нужного вам режима, используя доступные для него команды настройки (смотрите раздел “Настройка Emacs”).

Многие основные режимы автоматически загружаются (включаются) при открытии файла с соответствующим расширением. Вы также можете включить или отключить нужный режим вручную с помощью команды M-x name-mode, где name — имя режима. Например, команда M-x auto-fill-mode включает режим автоматического заполнения строк или отключает его, если этот режим ранее был включен.

Кроме того, включение или отключение режима можно производить путем установки истинного или ложного значения переменной с именем name-mode. Для установки переменной можно использовать команду M-x set-variable, которая запросит у вам имя переменной, и значение для нее. Для истинного значения обычно используется значение t, а для ложного — nil.

Работа с исходными текстами программ

CC Mode

Этот основной режим используется при редактировании исходных текстов программ на языках C, C++, Java и Objective C. Режим предоставляет несколько стилей оформления текстов программ, каждый из которых определяет отступы, расположение открывающих и закрывающих скобок, а также многие другие параметры. Кроме того, данный режим обеспечивает правильную работу с выражениями соответствующего языка, а также подсветку ключевых слов и других элементов текста программы.

Режим также обеспечивает возможность компиляции программ прямо из Emacs, а также интерфейс к отладчику.

Данный режим поставляется вместе с GNU Emacs. Как правило, он подключен (сделан доступным для Emacs) по умолчанию, так что вы можете смело открывать исходный текст на соответствующем языке — режим будет загружен автоматически.

Perl

Для редактирования программ на языке Perl самым распространенным является режим cperl-mode. Он обеспечивает подсветку синтаксиса языка, а также много полезных дополнений, например, вывод подсказки о синтаксисе операторов языка или развертывание сокращений в полные конструкции языка. Режим поставляется вместе с GNU Emacs.

Другие режимы для языков программирования

Кроме перечисленных выше режимов, в поставку GNU Emacs входит много режимов для работы с исходными текстами программ на различных языках программирования, таких как SQL, Python, Tcl, Fortran, Pascal, язык файлов make, языки разных командных процессоров, и многие другие...

Подробный список таких режимов можно найти в Emacs Elisp Archive (смотрите раздел “Полезные ресурсы”).

JDEE

JDEE — это среда разработки Java для Emacs. Этот пакет обеспечивает эффективную работу с исходными текстами программ на языке Java.

JDEE позволяет компилировать, запускать и отлаживать как автономные программы, так и апплеты, написанные на языке Java. Кроме этого, пакет обеспечивает богатые возможности по автоматической вставке текста для различных конструкций Java, дополнение имен функций и переменных — членов классов, навигацию по исходным текстам и многое другое.

Emacs Code Browser

Emacs Code Browser (ECB) представляет собой интегрированную среду разработки, реализованную на основе Emacs. В настоящее время эта среда может быть использована для работы с исходными текстами программ на языках C, C++, Java, Emacs Lisp. Работа с исходными текстами программ на языке Java особенно эффективна при использовании пакета JDEE, упомянутого ранее.

Рисунок 1.2. Окно Emacs при запущенном Emacs Code Browser

Как видно на рисунке Рисунок 1.2. Окно Emacs при запущенном Emacs Code Browser, слева расположены четыре окна, в которых отображаются список рабочих каталогов, список файлов в выбранном рабочем каталоге, список функций/методов в текущем файле, а также список буферов. Справа располагается окно редактирования исходного текста программы. При смене текущего буфера изменяются и данные, отображаемые слева.

Для активации пакета необходимо выполнить команду M-x ecb-activate. После выполнения этой команды и появится окно, изображенное на рисунке. Для прекращения работы необходимо выполнить команду ecb-deactivate.

Работа с текстами

Для Emacs доступны не только режимы, рассчитанные на работу с исходными текстами программ. Emacs позволяет комфортно создавать и редактировать тексты любого типа.

Работа с SGML/XML/HTML

Для работы с текстами, для которых используются языки разметки XML/SGML/HTML, существует режим psgml. Данный режим существенно облегчает разметку текстов, позволяя вставлять теги и добавлять атрибуты для них. При этом psgml делает разбор документа и анализирует его DTD (определение типа документа), что позволяет использовать дополнение при вводе имен тегов, а также корректно редактировать атрибуты тегов. Вставка тегов также допускается только в тех местах, где это разрешено определением типа документа. Это позволяет уменьшить количество ошибок при разметке документов.

Кроме того, режим предоставляет множество команд, полезных для работы с документом, таких как перемещение по дереву тегов, свертывание отдельных частей документа, проверка правильности документа и многие другие.

На сайте Бориса Тоботраса выложен перевод главы из книги "SGML CD: Free SGML Software and How to Use It", которая посвящена использованию Emacs для редактирования файлов в формате SGML.

Для работы с XSL-файлами могут использоваться пакеты xslide, xslt-process, xae. Некоторые из этих пакетов входят в состав дистрибутивов ALT Linux.

Работа с TeX/LaTeX

Для работы с файлами TeX/LaTeX основным режимом является режим auctex. Этот режим облегчает ввод команд разметки TeX/LaTeX. Кроме того, данный режим обеспечивает компиляцию файлов, просмотр результатов и обработку ошибок.

Для режима auctex существует несколько дополнений, которые позволяют просматривать результат обработки текста прямо в том буфере, где происходит его редактирование. Это пакеты preview-latex и x-symbol. Как выглядит окно Emacs при редактировании текста с использованием пакета preview-latex изображено на рисунке Рисунок 1.3. Окно Emacs при использовании пакета preview-latex.

Рисунок 1.3. Окно Emacs при использовании пакета preview-latex

Проверка правописания

Emacs умеет проверять правописание текстов с помощью программы ispell. Поддержка этой программы входит в поставку GNU Emacs. Команды, которые производят проверку текста, начинаются со слова ispell-. Для разных буферов могут использоваться различные словари.

Помимо проверки текста по требованию, доступен вспомогательный режим, который называется flyspell-mode. Он проверяет слова по мере их ввода. Этот режим также входит в поставку GNU Emacs.

Другие режимы и пакеты

Режим MMM

Данный режим позволяет использовать несколько основных режимов в одном буфере (отсюда и пошло его название). Это особенно полезно для редактирования файлов, в которых в текст на одном языке внедрены фрагменты на другом языке. Например, этот режим может использоваться при редактировании файлов JSP, PHP, HTML::Mason. Данный пакет собран для ALT Linux под именем emacs-mmm-mode.

Пакет Speedbar

Пакет speedbar предоставляет возможность отображения иерархических данных. Это удобно для отображения файловой системы в виде дерева или отображения списка функций в файле с исходным текстом.

Для запуска пакета наберите M-x speedbar. При этом будет создан отдельный фрейм, содержащий отображаемое дерево. Пакет имеет множество настроек, так что вы можете легко настроить его под себя. Для получения дополнительной информации смотрите info-файл для Speedbar.

Пакет Tiny-tools

В этот пакет входит много самых разных полезных дополнений для различных режимов. Например, пакет tiny-perl, входящий в состав этого пакета, предоставляет команды для просмотра документации по модулям Perl, команды для редактирования документации и многое другое. Пакет tiny-tools можно скачать по адресу http://tiny-tools.sourceforge.net/. Данный пакет также входит в состав дистрибутивов ALT Linux.

Пакет Gnus

Gnus — это пакет для чтения новостей Usenet и электронной почты. Этот пакет очень гибок, и с его помощью можно эффективно фильтровать почту и новости, создавать виртуальные группы, создавать группы сообщений, похожие на настоящие группы новостей, по результатам поиска в архивах usenet. С пакетом поставляется очень подробная документация, поэтому я рекомендую обратиться к ней. Данный пакет входит в поставку GNU Emacs, но его также можно скачать и с сайта GNUS по адресу http://www.gnus.org/.

Для запуска этого пакета достаточно просто набрать M-x gnus, и данный пакет будет запущен, открывая вам доступ к серверу новостей Usenet (если вы конечно указали его имя в настройках). Для настройки почты и различных возможностей пакета, вам надо прочитать нужный раздел в Info.

Пакет BBDB

Этот пакет позволяет организовать на основе Emacs базу данных для хранения адресов, телефонов и прочей информации. Пакет обеспечивает интеграцию со многими популярными пакетами чтения новостей usenet и почты. Существуют утилиты, которые позволяют экспортировать эту базу данных в формате, понятном для программ синхронизации с популярным PDA Palm Pilot. Данный пакет входит в состав дистрибутивов ALT Linux. Кроме того, пакет можно скачать с его собственного сайта http://bbdb.sourceforge.net/.

Пакет Mailcrypt

Этот пакет является интерфейсом к популярной системе шифрования PGP. Он позволяет работать как с оригинальным PGP, так и с его свободным клоном — GnuPG. Использование этих программ возможно из нескольких пакетов для работы с почтой — Gnus, VM, Rmail, MH-E, Mew. Среди доступных операций — шифрование и расшифровка сообщений, подпись сообщений, проверка электронных подписей. Данный пакет входит в состав дистрибутивов ALT Linux. Кроме того, его можно скачать его с сайта http://mailcrypt.sourceforge.net/.

Пакет Tramp

Этот пакет представляет возможности доступа к файлам на других компьютерах. Этот пакет аналогичен по свойствам пакету Ange-FTP, однако что Ange-FTP использует для перемещения файлов между машинами протокол ftp, тогда как Tramp использует команды rsh/rcp, или их более безопасные аналоги — ssh/scp. Данный пакет входит в состав дистрибутивов ALT Linux.

Контроль версий

Emacs поддерживает различные системы контроля версий. В мире GNU чаще всего используется CVS, поэтому Emacs обеспечивает очень хорошую поддержку этой системы контроля версий. Команды, относящиеся к работе с CVS, имеют префикс cvs-. Пакет поддержки CVS входит в поставку GNU Emacs.

Командный процессор

Вы можете выполнять команды командного процессора прямо из GNU Emacs. Для выполнения одной команды вы можете использовать последовательность клавиш M-!, при этом результат выполнения отображается в мини-буфере. Но если вы хотите выполнить несколько команд с удобным просмотром результатов выполнения, то лучше использовать команду M-x shell, которая запускает командный процессор и предоставляет различные возможности по работе с историей команд.

Кроме возможности запуска внешнего командного процессора, для Emacs существует пакет eshell (он поставляется вместе с GNU Emacs), который полностью написан на Emacs Lisp. При этом не запускается никаких внешних процессов, кроме тех, которые совсем уж необходимы для работы. Этот пакет разрабатывался как функциональная замена bash, zsh, 4doc и rc. Для его запуска вам нудно просто набрать M-x eshell, и перед вами возникнет привычная командная строка, только с дополнительными возможностями, которые вы можете расширять собственными силами.

Справочные страницы

Для чтения справочных страниц (man pages) GNU Emacs представляет два независимых интерфейса — man и woman (от сочетания without man — без использования команды man). Просто наберите команду M-x man или M-x woman и введите название нужной вам страницы, и она будет отображена в буфере Emacs.

В отличие от команды man, команда woman позволяет использовать завершение для имен справочных страниц, однако работает медленнее. Кроме того, команда woman не использует никаких внешних программ для отображения справочных страниц (отсюда происходит ее название).

Настройка Emacs

Для настройки Emacs используется специальный файл, который обычно находится в каталоге пользователя и называется .emacs. В этом файле содержатся выражения на Emacs Lisp, которые устанавливают значения переменных, загружают нужные пакеты и выполняют другие действия. В этот же файл записываются функции, определенные пользователем, которые затем могут вызываться им при работе с Emacs. Кроме того, имеется общесистемный файл инициализации, с помощью которого администратор может обеспечить загрузку пакетов, необходимых для всех пользователей данного компьютера.

Первое время вы можете даже не заглядывать в файл настройки, а настраивать Emacs через пункт меню Customize Emacs из меню Options, или с помощью команды M-x customize. Для того, чтобы ваши настройки автоматически восстанавливались при каждом запуске, их необходимо сохранить, нажав на кнопку Save в буфере настройки. При этом в ваш файл настройки записываются выражения Emacs Lisp, устанавливающие необходимые параметры.

Настройка русского языка в GNU Emacs

GNU Emacs для работы с разными языками использует MULE (Многоязыковые расширения для GNU Emacs). Это позволяет эффективно работать как с европейскими, так и с азиатскими языками.

Для работы с конкретным языком необходимо определить так называемое языковое окружение. Для ввода не-ASCII символов надо определить метод ввода. Для переключения между языками используется специальное сочетание клавиш C-\.

Чтобы настроить GNU Emacs для работы с русским языком (предполагается использование кодировки koi8-r), надо поместить в ваш файл настройки (~/.emacs) следующие строки:

(set-language-environment 'Cyrillic-KOI8)
(set-terminal-coding-system 'koi8-r)
(set-keyboard-coding-system 'koi8-r)
(setq default-buffer-file-coding-system 'koi8-r)
(prefer-coding-system 'koi8-r)
(define-coding-system-alias 'koi8-u 'koi8-r)
(put-charset-property 'cyrillic-iso8859-5 'preferred-coding-system 'koi8-r)
(codepage-setup 1251)
(define-coding-system-alias 'windows-1251 'cp1251)
(set-input-mode nil nil 'We-will-use-eighth-bit-of-input-byte)
(setq-default coding-system-for-read 'koi8-r)
(set-selection-coding-system 'koi8-r)

Этот код устанавливает кодировку koi8-r в качестве основной кодировки для чтения, записи и общения с внешними программами. Кроме этого, определяется псевдоним для русской кодировки Windows — cp1251.

Для правильного отображения текстов необходимо установить для начертания default (это можно сделать с помощью команды M-x customize-face) шрифт, который содержит большой набор кодировок, включая кодировку для отображения utf-8 (например, misc-fixed). Такая настройка позволит, например, нормально работать с русскими и немецкими словарями в одном буфере Emacs.


Обсудить данную тему на нашем форуме "Все о Linux"