Морев Н. В. <kolyuchiy@gmail.com>
Emacs -- это расширяемый, настраиваемый, само-документированный текстовый редактор1. Его первая версия была создана Ричардом Столлманом2 в 1976 году.
Большая часть Emacs'а написана на специальном диалекте Lisp'а, называемом Emacs Lisp. Это интерпретируемый язык, позволяющий с лёгкостью расширять возможности редактора без перекомпиляции или перезагрузки редактора. Это способствовало появлению огромного количества различных дополнений для Emacs. Так, например, современные версии Emacs включают в стандартной поставке встроенный веб-браузер, программу для чтения почты и групп Usenet, тетрис и виртуального психотерапевта.
Одна из эмблем Emacs -- кухонная мойка, потому что говорят, что в Emacs'е реализовано все, кроме кухонной мойки. Многие фанаты Emacs используют его как свою основную операционную систему -- все программы, с которыми они работают запускаются только из-под Emacs. Есть и такие, которые считают себя адептами Церкви Emacs3, во главе которой стоит святой ИГНУсий -- Ричард Столлман4. Короче говоря, Emacs -- это культовый и легендарный текстовый редактор.
Emacs -- работает не только под GNU/Linux. Он был портирован на множество других операционных систем, включая и MS Windows.
Как и многие другие удачные opensource-проекты, Emacs разделился на несколько независимых друг от друга ветвей, разработка которых ведётся отдельно. Сегодня наиболее популярными версиями Emacs являются GNU Emacs5 и XEmacs6. Они различаются во множестве мелких деталей, но по большому счету очень похожи, поэтому все, что будет сказано об одной версии скорее всего будет работать и на другой. Обе версии поддерживают работу как в текстовой консоли так и в графическом режиме. При написании этого текста использовался XEmacs версии 21.
При запуске Emacs показывает в своём окне минимальную информацию необходимую для начала работы с редактором. Это основные сочетания клавиш для вызова различных функций. («C-» означает клавишу Control, «M-» -- клавишу Meta, которую на PC заменяет Alt)
Встроенная помощь | |
C-h F | Список часто задаваемых вопросов о Emacs и ответов на них |
C-h t | Небольшой текст, рекомендуемый для прочтения, чтобы научиться эффективно работать с редактором |
f1 | Помощь |
C-h i | Читать встроенную документацию |
Полезные сочетания клавиш | |
C-x C-f | открыть или создать файл |
C-x C-s | сохранить изменения в текущем файле |
C-x u | откат изменений |
C-x C-c | выход из редактора |
Покажем возможности Emacs как IDE на примере разработки одной небольшой программы на C++.
В Emacs существуют специальные режимы (major modes) практически для любого языка программирования, реализующие функции подсветки синтаксиса, автодополнения, автоматических отступов, подсветки скобок и кавычек, вызова соответствующих программ компиляции и запуска и т.д.
Для манипулирования файлами и каталогами в Emacs существует режим редактирования директорий (Dired mode). Он запускается по нажатию C-x d или M-x dired. Создадим новый каталог для хранения проекта. Для этого, находясь в домашнем каталоге, нажмём + и введём имя нового каталога. Затем перейдём в этот каталог и создадим новый файл проекта7 с помощью сочетания клавиш C-x C-f, о котором мы уже упоминали выше. Откроется новый буфер для этого файла. В этом буфере автоматически загрузится режим для редактирования исходников C++ (c++-mode).
Сначала введём комментарии к программе. Для этого нажмите M-;. Далее введём саму программу (см. рис. 1).
Теперь сохраним нашу программу (C-x C-s) и скомпилируем (M-x compile). Будет запрошена команда для компиляции. По умолчанию -- это make -k. Но так как мы ещё не написали Makefile, указывающий команде make, как нужно компилировать программу, мы вводим make -k hello, и make сам вызовет компилятор g++ с нужными ключами. Такой способ работает только для небольших программ, состоящих из одного модуля. В более сложных случаях мы должны написать соответствующий Makefile.
Если мы собираемся отлаживать нашу программу в отладчике gdb, то при компиляции нужно задать опцию -g, чтобы в получившийся исполняемый файл была включена отладочная информация. В этом случае команда для компиляции будет g++ -g -o hello hello.cc.
Теперь, чтобы запустить программу, мы загружаем встроенный в Emacs shell (M-x shell). Затем в нем запускаем наш исполняемый модуль (см. рис. 2).
В Emacs'е кроме всего прочего есть ещё и фронтенд для отладчика gdb. Чтобы войти в соответствующий режим введите M-x gdb, затем имя исполняемого модуля, предназначенного для отладки.
Появится командная строка gdb. Там введём две команды break main и run. Первая устанавливает брейкпоинт на функцию main(), а вторая запускает программу. Команда N в командной строке отладчика исполняет следующую строку программы. Чтобы получить справку по всем командам gdb введите в командной строке help. Более полную информацию об отладчике можно получить по команде C-h i m gdb.
Предположим, что мы забыли написать точку с запятой после endl. В этом случае компилятор выдаст соответствующую ошибку. Чтобы автоматически перейти к строке, содержащей ошибку, нажмите C-x `.
Режим компиляции в Emacs умеет отлавливать не только ошибки, которые выдаёт g++, он понимает и множество других компиляторов, включая MS Visual C++.
Как вы, наверное, уже успели заметить, при вводе программы Emacs может автоматически (или по нажатию кнопки Tab) вставлять нужное количество пробелов в начале строки. Есть также возможность автоматически расставить отступы в уже готовой программе. Для этого выделите весь текст в текущем буфере (C-x H) и нажмите M-x indent-region.
Кроме того, о чем уже говорилось выше, в Emacs есть ещё некоторые возможности, делающие процесс написания программ удобным. Перечислим их кратко.
Emacs -- это настоящая интегрированная среда разработки (IDE). Для расширения своей функциональности Emacs активно использует внешние утилиты, стандартные для большинства Unix-систем. В этом смысле, он гораздо лучше интегрирован в Linux, чем многие другие существующие коммерческие IDE. В Emacs можно найти практически все, что может понадобиться для редактирования текстов, и даже больше того. Но если все-таки, что-то там отсутствует, то программист всегда имеет возможность написать это самостоятельно.
Невозможно изучить весь Emacs, но чем больше вы о нем знаете, тем эффективнее сможете работать. В Emacs есть несколько способов получения дополнительных сведений. Во-первых, встроенная в редактор справка, которая вызывается нажатием C-h. Во-вторых, режим для просмотра документации в формате Info (C-h i). В-третьих, режим для просмотра документации в формате man (M-x manual-entry).
make8 -- это утилита, которая контролирует процесс получения исполняемых файлов или других неисходных файлов программы из исходных файлов. make получает знания о том, как компилировать программу, из специального файла, называемого Makefile, в котором перечисляются все неисходные файлы и как их получить из исходных файлов. Чтобы использовать make для сборки программы из исходных кодов, необходимо написать Makefile.
Правило в Makefile'е задаёт последовательность действий, необходимых для получения целевого файла из исходных файлов. Оно также задаёт список зависимостей целевого файла. Этот список должен включать в себя все файлы, которые используются при сборке цели.
Вот как может выглядеть простое правило:
target: dependencies ... commands ...
При запуске make можно указать целевое правило. Если оно не будет указано, то make собирает первую цель, указанную в Makefile'е.
Дополнительную информацию о make и Makefile'ах можно найти в документации make (C-h i m make).
Предположим, что нам необходимо собрать проект из нескольких исходных модулей на C++: main.cc, circle.cc и rectangle.cc. У двух из них есть файлы заголовков: circle.h и rectangle.h. Модуль main.cc использует два других и содержит функцию main(). Тогда самый простой Makefile может выглядеть примерно так:
main: circle.o rectangle.o
Здесь мы не указываем какую команду необходимо выполнить для компиляции, т.к. make имеет некоторые значения по-умолчанию, которые он применяет исходя из расширений исходных файлов.
При вызове программы make этот скрипт вызовет следующую последовательность действий:
g++ -c -o circle.o circle.cc g++ -c -o rectangle.o rectangle.cc g++ main.cc circle.o rectangle.o -o main
Если нам понадобится добавить в аргументы компилятора ключик -g, то мы просто напишем вначале Makefile'а
CXXFLAGS = -g
Настройки Emacs хранятся в файле .emacs в домашней директории пользователя. Этот файл представляет собой программу на Emacs Lisp'е.
Чтобы появилась возможность вводить текст на русском языке, необходимо добавить туда следующие строки (переключение на русский язык с помощью сочетания клавиш C-\):
(set-language-environment "Cyrillic-KOI8") (set-default-buffer-file-coding-system 'koi8-r) (set-default-file-coding-system 'koi8-r) (set 'default-input-method "cyrillic-jcuken") (put-charset-property 'cyrillic-iso8859-5 'preferred-coding-system 'koi8-r)
Дополнительная информация о файлах .emacs на http://www.dotemacs.de/basics.html.
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -nonavigation -split 0 -local_icons -address kolyuchiy@gmail.com -no_auto_link emacs-cxx.tex
The translation was initiated by Kolia Morev on 2004-04-10
Обновлено Tue Apr 15 21:27:20 2014 +0400