GNU Emacs

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:00, 17 июня 2017.
(перенаправлено с «Emacs»)
GNU Emacs
GNU Emacs.png
GNU Emacs 24.3.1 on GNOME 3
Создатели: Richard Stallman and Guy L. Steele, Jr.
Разработчики: GNU Project
Выпущена: 20 March 1985 года; 34 years ago (1985-03-20)
Постоянный выпуск: 25.1 / 17 September 2016 года; 2 years ago (2016-09-17)
Предыдущий выпуск: 25.2-RC1 / 3 February 2017 года; 2 years ago (2017-02-03)
Написана на: C, Emacs Lisp
Операционная система: GNU, Linux, Windows, macOS, BSDs
Локализация: English
Тип ПО: Text editor
Лицензия: GNU GPLv3
Веб-сайт www.gnu.org/software/emacs

GNU Emacs - один из самых популярных текстовых редакторов Emacs. GNU Emacs — это развитие оригинальной версии Emacs, написанной Ричардом Столлманом[Источник 1]. На протяжении всей своей истории GNU Emacs был центральным компонентом проекта GNU [Источник 2] и флагманом движения свободного программного обеспечения. GNU Emacs иногда сокращается как GNUMACS, особенно для отличия от других вариантов Emacs. Строка тега для GNU Emacs является «расширяемым самодокументирующим текстовым редактором».

История

В 1976 году Ричард Столлман написал первый Emacs.

В 1981 году Джеймсом Гослингом[Источник 3] был создан Gosling Emacs[Источник 4], первый Emacs, работавший на UNIX. Он был написан на С, а расширения — на диалекте языка Lisp[Источник 5] под названием Mocklisp.

В 1984 году Ричард Столлман начал работать над GNU Emacs, чтобы создать бесплатную альтернативу программному обеспечению, принадлежащую Gosling Emacs. GNU Emacs стал первой программой проекта GNU. Ядро редактора было написано на С, а расширения писались на Emacs Lisp[Источник 6]. Первые версии GNU Emacs использовали часть кода Gosling Emacs, но когда Gosling Emacs был продан компании UniPress и стал проприетарным, исходный код GNU Emacs был очищен от исходного кода Gosling Emacs. В 1991 году появился форк[Источник 7] Emacs от компании Lucid Inc.[Источник 8], названный LucidEmacs. Он был основан на ранней альфа-версии GNU Emacs 19. Впоследствии он был переименован в XEmacs.

Назначение

Для расширения GNU Emacs используется диалект языка Lisp — Emacs Lisp. Строго говоря, GNU Emacs нельзя назвать просто текстовым редактором[Источник 9]. GNU Emacs — это интерпретатор языка Emacs Lisp, конструктор текстового редактора, заточенного именно под Вас. Малая часть программы реализована на языке С (около 30% — отвечает за базовое взаимодействие с [Операционная система|ОС}, ввод-вывод, отрисовку окон), а весь основной функционал — на Emacs Lisp . Именно такая архитектура отличает GNU Emacs от других профессиональных текстовых редакторов — он расширяем.

Платформы

GNU Emacs стал программой, которая работает на самых разных операционных системах, включая DOS[Источник 10], Windows и OpenVMS[Источник 11]. В Emacs 23.1 была удалена поддержка некоторых «устаревших платформ», таких как VMS и большинство вариантов Unix (кроме тех, которые основаны на Linux). Она доступна для большинства Unix-подобных операционных систем, таких как Linux, различных BSD[Источник 12], Solaris, AIX , HP-UX[Источник 13] и macOS[Источник 14], и часто включается в их пакеты установки системы.

GNU Emacs работает как на текстовых терминалах, так и в графическом пользовательском интерфейсе[Источник 15]. В Unix-подобных операционных системах GNU Emacs может использовать X Window System[Источник 16] для создания своего графического пользовательского интерфейса либо непосредственно с помощью виджетов виджетов Athena, либо с помощью «набора инструментов виджетов», таких как Motif, LessTif или GTK +. GNU Emacs также может использовать графические системы, родные для macOS и Windows, для предоставления меню, панелей инструментов, полос прокрутки и контекстных меню, более близких к оформлению каждой платформы.

Терминология

Emacs создавался до появления Windows и некоторые его термины непривычны для многих пользователей этой операционной системы. Ниже приведены примерные аналоги некоторых терминов Emacs в Windows.

  • frame — window, окно. Фрейм может содержать несколько окон (emacs window).
  • buffer — file, объект в памяти, в котором хранится текст. Выглядит как окно.
  • window — tab/pane, window, тоже окно. Область фрейма отображающая буфер.
  • active region  — text selection, выбор текста (пометка)
  • fill  — word wrap, выравнивание текста
  • yank — paste, вставить скопированное
  • kill — cut, вырезать
  • kill ring — clipboard, область данных где хранится скопированное
  • mode line — status bar, строка отображающая текущие режимы emacs
  • point — cursor, курсор
  • font lock — syntax coloring, подстветка синтаксиса

Использование GNU Emacs

Команды[Источник 17]

В обычном режиме редактирования GNU Emacs ведет себя как и другие текстовые редакторы, т.е. позволяет пользователю вставлять символы с соответствующими клавишами и перемещать точку редактирования с помощью клавиш со стрелками. Последовательность клавиш Escape или нажатие клавиши управления и / или клавиши meta, клавиши alt или суперключей вместе с обычным ключом приводит к изменению нажатий клавиш, которые вызывают функции из среды Emacs Lisp. Команды, такие как save-buffer и save-buffers-kill-emacs, комбинируют несколько модифицированных нажатий клавиш.

Некоторые команды GNU Emacs работают, вызывая внешнюю программу, такую ​​как ispell для проверки орфографии или GNU Compiler Collection для компиляции программы, синтаксический разбор вывода программы и отображение результата в GNU Emacs.

Минибуфер

Минибуфер используется командами Emacs для чтения более сложных, чем простое число, аргументов. Аргументами минибуфера могут быть имена файлов, имена буферов, имена функций Лиспа, имена команд Emacs и много других вещей в зависимости от считывающих аргумент команд. Для редактирования аргументов в минибуфере могут быть использованы обычные команды редактирования [Emacs]].

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

Иногда в круглых скобках после двоеточия появляется аргумент по умолчанию; он тоже является частью подсказки. Значение по умолчанию будет использовано как значение аргумента, если вы вводите пустой аргумент (например, просто наберете RET). К примеру, команды, считывающие имена буферов, всегда показывают значение, принимаемое по умолчанию; оно является именем буфера, который будет использован в дальнейшем, если вы просто наберете RET.

Простейший способ дать аргумент минибуферу -- набрать желаемый текст и завершить его RET, клавишей для выхода из минибуфера. Вы можете отменить команду, которая запрашивает аргумент, и выйти из минибуфера, набрав C-g.

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

  • Если какая-то команда получает ошибку, пока вы находитесь в минибуфере, то это не отменяет минибуфер. Однако, эхо-область нужна для сообщения об ошибке, и поэтому сам минибуфер прячется на время. Он возвращается через несколько секунд или сразу же, как только вы наберете что-нибудь.
  • Если в минибуфере вы используете команду, чьей целью является печать сообщения в эхо-области, такую как C-x =, то сообщение отображается как обычно, а минибуфер прячется на время. Он возвращается через несколько секунд, или как только вы наберете что-то еще.
  • Когда используется минибуфер, эхо набираемых знаков не производится.

Основные режимы

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

Основные режимы подразделяются на три основных группы:

  • Режим Lisp (который имеет несколько вариантов).
  • Режим C и режим Fortran -- для специфических языков программирования.
  • Режим Text, режим Nroff, режим TeX и режим Outline -- для редактирования текста на естественном языке.

Остальные основные режимы не предназначены для использования с файлами пользователей; они используются в буферах, создаваемых Emacs для специальных целей, это такие режимы, как режим Dired для буферов, созданных Dired , режим Mail для буферов, созданных при помощи C-x m , и режим Shell для буферов, используемых для связи с подчиненным процессом оболочки .

Большинство основных режимов для языков программирования указывают, что только пустые строки разделяют абзацы. Таким образом, команды работы с абзацами остаются удобными. Они так же заставляют режим Auto Fill использовать определение TAB для создания отступа во вновь создаваемых им строках. Это делается, поскольку большинство строк в программе обычно начинаются с отступа.

Второстепенные режимы

Использование «второстепенных режимов» позволяет выполнить дополнительную настройку. Буфер редактирования GNU Emacs может использовать только один основной режим за раз, но несколько второстепенных режимов могут работать одновременно. Например, режим Auto Fill -- это второстепенный режим, в котором SPC разрывает строки на границе слов по мере того, как вы набираете. Все второстепенные режимы независимы друг от друга и от выбранного основного режима. Большинство второстепенных режимов сообщают, что они включены, в строке режима; например, надпись `Fill' в строке режима означает, что включен режим Auto Fill.

Для получения имени командной функции, включающей или выключающей второстепенный режим, добавьте к имени второстепенного режима слово -mode. Таким образом, команда запуска или выключения режима Auto Fill называется M-x auto-fill-mode. Подобные команды обычно запускаются через M-x, но при желании к ним можно привязать ключи. Без аргумента эти команды включают режим, если он был выключен, и выключают, когда он был включен. Эта техника известна как переключение. Положительный аргумент всегда включает режим, а явный нулевой или отрицательный аргумент всегда выключает его.

Включение или выключение некоторых второстепенных режимов применяется только к текущему буферу; каждый буфер независим от других. Следовательно, вы можете включить режим в одних буферах и выключить в других. К второстепенным режимам, которые могут так работать, относятся режим Abbrev, режим Auto Fill, режим Auto Save, режим Font-Lock, режим Hscroll, режим ISO Accents, второстепенный режим Outline, режим Overwrite и режим Binary Overwrite.

Руководство

Помимо встроенных инструкций, GNU Emacs имеет необычно длинное и подробное руководство. Электронная версия GNU Emacs Manual,которая была написана Ричардом Столлманом, поставляется с GNU Emacs и может быть просмотрена с помощью встроенного Инфо-браузера. В нее включены две дополнительных инструкции, справочное руководство Emacs Lisp Била Льюиса, Ричарда Столлмана и Дэна Лалиберт и Введение в программирование в Emacs Lisp Роберта Часселла. Все три руководства также публикуются в виде книги Фондом свободного программного обеспечения.

История выпуска

Версия Дата выхода Существенные изменения
25.1 17 сентября 2016
  • Обеспечена загрузка динамически связываемых библиотек, которые могут выступать в роли подключаемых модулей, реализующих дополнительную функциональность для использования в Lisp-программах Emacs, по аналогии с пакетами для Emacs Lisp;
  • Экспериментальная поддержка отрисовки с использованием библиотеки Cairo (требуется сборка с опцией "--with-cairo"). Положительным моментом использования Cairo является возможность использования встроенных диалогов вывода на печать при сборке Emacs с GTK+;
  • Реализован менеджер сетевой безопасности (Network Security Manager - NSM), в том числе обеспечивающий проверку корректности сертификатов TLS/SSL. Во встроенном генераторе псевдослучайных чисел обеспечена генерация криптографически стойких случайных значений;
24.5 10 апреля 2015
  • В новой версии отмечается в основном накопившиеся исправления ошибок. Увеличен размер буфера истории изменений (history-length теперь равен 100). Добавлены новые опции "erc-rename-buffers", "erc-my-nick-prefix-face' и "erc-nick-prefix-face'.
24.4 20 октября 2014
  • Встроенный веб-браузер (M-x eww)
  • Улучшенная поддержка работы с несколькими мониторами и полноэкранного режима
  • «Электрический» отступ активирован по умолчанию
  • Поддержка сохранения и восстановления состояния фреймов и окон
  • Пакеты Emacs Lisp теперь можно подписывать цифровой подписью
  • Новый механизм «советов» для Emacs Lisp
  • Поддержка уведомлений об изменении файлов
  • Попиксельное изменение размеров фреймов и окон
  • Поддержка меню в текстовых консолях
  • Новый режим прямоугольного выделения (C-x SPC)
24.3 11 марта 2013
  • Новая версия примечательна переходом к использованию GTK3+ в качестве X-тулкита по умолчанию; добавлением обобщённых переменных в базовый Emacs Lisp; обновлением библиотеки для эмуляции Common Lisp; переработанным режимом для разработки на языке Python (с поддержкой Python 3); улучшением подсветки синтаксиса и добавлением поддержки новых конструкций для языка Ruby; заметно расширенной поддержкой вывода изображений с использованием ImageMagick.
24.2 27 августа 2012
  • Исправлена проблема безопасности CVE-2012-3479 и много других багов.
24.1 10 июня 2012
  • Новая встроенная система работы с пакетами и интерфейс для загрузки и установки дополнений. Проектом GNU и разработчиками Emacs введён в строй новый архив пакетов с дополнениями. Поддержка двунаправленного текста при просмотре и редактировании документов, в том числе поддержка языков с начертанием справа налево, таких как арабский и иврит. Поддержка лексического контекста в Emacs Lisp;
23.3 10 марта 2011
  • Улучшена функциональность Emacs с системами контроля версий.
23.2 8 мая 2010
  • Ключевым улучшением, реализованным в новой версии, является интеграция в комплект поставки набора дополнений CEDET (Collection of Emacs Development Environment Tools), добавляющего в Emacs такие возможности как средства для управления кодом проектов, поддержку автодополнения имен переменных и функций, механизмы генерации кода, режим работы с UML-диаграммами. Кроме того, в Emacs 23.2 реализован новый режим редактирования Javascript, изменен режим по умолчанию для создания сообщения электронной почты, который теперь поддерживает обработку MIME.
23.1 29 июля 2009
  • Эта версия включает в себя большой набор новых возможностей, среди которых стоит отметить улучшенную поддержку юникода, отображение шрифтов с помощью Xft и Fontconfig, возможность работы с GNU/Emacs либо как через демон, либо через обычную сессию (для X-ов и текстовых терминалов). Новые пакеты для просмотра PDF и PostScript файлов (Doc-view mode), взаимодействие с процессами с помощью dbus, шифрование через GNU Privacy Guard, редактирование XML документов в режиме nXML, Ruby mode и многое другое.
22.3 5 сентября 2008
  • Поддержка GTK + инструментов, улучшенная поддержка мыши, новая клавиатурная макросистема, улучшенная поддержка Unicode.
22.2 26 марта 2008
  • Значительно улучшена поддержка языков подобных тайскому и арабскому;
  • В состав пакета включен GNOME Office плагин, позволяющий встраивать диаграммы, подготовленные в Gnumeric;
  • Возможность открывать файлы, размещенные на удаленных машинах, через samba, ftp или ssh;
  • Новый экспериментальный плагин для организации одновременной совместной работы над документом;
  • Улучшена работа фильтров импорта и экспорта, появился фильтр для формата OpenDocument и экспериментальный фильтр для OpenXML;
  • Поддержка перетаскивания изображений мышью из других приложений в AbiWord;
  • Режим быстрого предпросмотра изображений;
22.1 2 июня 2007
  • добавлена поддержка GTK, добавлены и обновлены многие пакеты, улучшена производительность.
  • Поддержка Unicode
  • Поддержка Mac OS X
21.1 20 октября 2001
  • Включает поддержку для пропорциональных шрифтов: символы в строке могут быть переменной шириной и линии могут иметь переменную высоту. Добавлен ряд новых функций пользовательского интерфейса:
20.1 17 сентября 1997
  • Многоязычная поддержка
19.28 15 сентября 1997
  • Поддержка нескольких окон. Новый интерфейс для управления версиями программного обеспечения управлений (VC)
18.24 2 октября 1986
  • Режим сервера, Разборка M-x, Emacs может открывать TCP-соединения, emacs -nw для открытия Emacs в консольном режиме на xterms.
17.36 20 декабря 1985
16.56 15 июля 1985
15.10 11 апреля 1985
13.0? 20 марта 1985

Источники

  1. Столлман, Ричард Мэттью // Википедия. [2017—2017]. Дата обновления: 17.01.2017. URL: http://ru.wikipedia.org/?oldid=83119378 (дата обращения: 17.01.2017).
  2. GNU // Википедия. [2017—2017]. Дата обновления: 15.01.2017. URL: http://ru.wikipedia.org/?oldid=83069206 (дата обращения: 15.01.2017).
  3. Гослинг, Джеймс // Википедия. [2016—2016]. Дата обновления: 22.12.2016. URL: http://ru.wikipedia.org/?oldid=82617278 (дата обращения: 22.12.2016).
  4. Gosling Emacs // Википедия. [2013—2013]. Дата обновления: 13.10.2013. URL: http://ru.wikipedia.org/?oldid=58891566 (дата обращения: 13.10.2013).
  5. Лисп // Википедия. [2017—2017]. Дата обновления: 24.03.2017. URL: http://ru.wikipedia.org/?oldid=84464474 (дата обращения: 24.03.2017).
  6. Emacs Lisp // Википедия. [2013—2013]. Дата обновления: 04.10.2013. URL: http://ru.wikipedia.org/?oldid=58719964 (дата обращения: 04.10.2013).
  7. Форк // Википедия. [2017—2017]. Дата обновления: 03.03.2017. URL: http://ru.wikipedia.org/?oldid=84029167 (дата обращения: 03.03.2017).
  8. Lucid Inc// Википедия. [2017—2017]. Дата обновления: 08.03.2017. URL:https://en.wikipedia.org/wiki/Lucid_Inc.(дата обращения: 08.03.2017).
  9. Текстовый редактор // Википедия. [2017—2017]. Дата обновления: 22.02.2017. URL: http://ru.wikipedia.org/?oldid=83829841 (дата обращения: 22.02.2017).
  10. DOS // Википедия. [2017—2017]. Дата обновления: 05.03.2017. URL: http://ru.wikipedia.org/?oldid=84080695 (дата обращения: 05.03.2017).
  11. OpenVMS // Википедия. [2017—2017]. Дата обновления: 15.02.2017. URL: http://ru.wikipedia.org/?oldid=83687173 (дата обращения: 15.02.2017).
  12. BSD // Википедия. [2015—2015]. Дата обновления: 18.10.2015. URL: http://ru.wikipedia.org/?oldid=73972211 (дата обращения: 18.10.2015).
  13. HP-UX // Википедия. [2017—2017]. Дата обновления: 06.01.2017. URL: http://ru.wikipedia.org/?oldid=82897967 (дата обращения: 06.01.2017).
  14. MacOS // Википедия. [2017—2017]. Дата обновления: 28.03.2017. URL: http://ru.wikipedia.org/?oldid=84543531 (дата обращения: 28.03.2017).
  15. Графический интерфейс пользователя // Википедия. [2017—2017]. Дата обновления: 25.03.2017. URL: http://ru.wikipedia.org/?oldid=84488014 (дата обращения: 25.03.2017).
  16. X Window System // Википедия. [2017—2017]. Дата обновления: 01.02.2017. URL: http://ru.wikipedia.org/?oldid=83416017 (дата обращения: 01.02.2017).
  17. Команды для GNU Emacs //gnu.org [2016-2017]. Дата обновления: 25.03.2017. URL: https://www.gnu.org/software/emacs/refcards/pdf/ru-refcard.pdf(дата обращения: 25.03.2017).

Ссылки