GNU Emacs

Материал из wikixw
Перейти к навигации Перейти к поиску

GNU Emacs является самым популярным и наиболее портированным текстовым редактором Emacs . Он был создан основателем проекта GNU Ричардом Столлманом . Как и другие разновидности Emacs, GNU Emacs расширяется с использованием полного языка программирования Тьюринга. GNU Emacs был назван "самым мощным текстовым редактором, доступным сегодня". при надлежащей поддержке со стороны базовой системы GNU Emacs может отображать файлы в нескольких наборах символов и одновременно отображать большинство человеческих языков по крайней мере с 1999 года. на протяжении всей своей истории GNU Emacs был центральным компонентом GNU проект и флагман движения за свободное программное обеспечение. GNU Emacs иногда сокращается как GNUMACS , особенно для того, чтобы отличить его от других вариантов EMACS.[7] тегом GNU Emacs является "расширяемый самодокументирующийся текстовый редактор".

История[править]

В 1976 году Столмен написал первый Emacs (”редактор макросов"), а в 1984 году начал работу над GNU Emacs, чтобы создать свободную программную альтернативу проприетарным Emacs Гослинга . GNU Emacs изначально была основана на Emacs Гослинга, но замена интерпретатора Mocklisp интерпретатором true Lisp потребовала, чтобы почти весь ее код был переписан. Это стало первой программой, выпущенной нарождающимся проектом GNU. GNU Emacs написан на C и предоставляет Emacs Lisp, также реализован в C, как язык расширения. Версия 13, первый публичный релиз, был сделан 20 марта 1985 года. Первой широко распространенной версией GNU Emacs была версия 15.34, выпущенная позже в 1985 году. Ранние версии GNU Emacs были пронумерованы как " 1.x.x, " с начальной цифрой, обозначающей версию ядра C. "1 "был сброшен после версии 1.12, поскольку считалось, что основное число никогда не изменится, и, таким образом, основная версия перескочила с" 1 "на"13". Новый номер третьей версии был добавлен для представления изменений, внесенных сайтами пользователей. В текущей схеме нумерации номер с двумя компонентами означает версию выпуска, а версии разработки с тремя компонентами.

GNU Emacs позже был портирован в Unix. Он предлагал больше возможностей, чем Gosling Emacs, в частности полнофункциональный Lisp в качестве языка расширения, и вскоре заменил Gosling Emacs в качестве редактора Emacs de facto Unix. Маркус Хесс воспользовался недостатком безопасности в подсистеме электронной почты GNU Emacs в своем разгуле взлома 1986 года, в котором он получил суперпользовательский доступ к компьютерам Unix.

Хотя пользователи обычно отправляли патчи и код Elisp в сеть.новостная группа emacs, участие в разработке GNU Emacs было относительно ограничено до 1999 года и использовалось в качестве примера стиля "Соборного" развития в Соборе и на базаре . С тех пор проект принял публичный список рассылки разработки и анонимный доступ к CVS. Разработка проходила в единой магистрали CVS до 2008 года, а сегодня использует git DVCS .

Ричард Столман оставался главным хранителем GNU Emacs, но временами отступал от этой роли. Стефан Монье и Чон Идонг наблюдали за техническим обслуживанием с 2008 года. 21 сентября 2015 Моннье объявил, что он будет уходить в качестве сопровождающего, действующего с замораживанием функции Emacs 25. 5 ноября 2015 года Джон Уигли был объявлен в качестве нового сопровождающего.

Лицензирование[править]

Условия лицензии GNU General Public License (GPL) гласят, что исходный код Emacs, включая компоненты C и Emacs Lisp, свободно доступен для изучения, изменения и распространения.

Более старые версии документации GNU Emacs появились под специальной лицензией, которая требовала включения определенного текста в любую измененную копию. Например, в руководстве пользователя GNU Emacs содержатся инструкции по получению GNU Emacs и эссе Ричарда Столмана "Манифест GNU". Руководства XEmacs, которые были унаследованы от более старых руководств GNU Emacs, когда произошла вилка, имеют ту же лицензию. Более новые версии документации используют лицензию GNU Free Documentation с "инвариантными разделами", которые требуют включения тех же документов и которые руководства объявляют себя как Руководства GNU .

Для GNU Emacs, как и для многих других пакетов GNU, остается правилом принимать значительные вклады в код только в том случае, если правообладатель выполняет соответствующее заявление об отказе или уступке своих авторских прав фонду свободного программного обеспечения . Исправления ошибок и незначительные взносы кода менее 10 строк освобождаются. Эта политика действует таким образом, что FSF может защищать программное обеспечение в суде, если его лицензия авторского Лева нарушена.

В 2011 году было замечено, что GNU Emacs случайно выпускает некоторые двоичные файлы без соответствующего исходного кода в течение двух лет, в противовес предполагаемому духу GPL. Ричард Столман описал этот инцидент как "очень плохую ошибку", которая была быстро исправлена. Естественно, FSF не подал в суд на нижестоящих распространителей, которые неосознанно нарушили GPL, распределив эти двоичные файлы.

Использование GNU Emacs[править]

Команды[править]

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

Некоторые команды GNU Emacs работают путем вызова внешней программы, такой как ispell для проверки орфографии или GNU Compiler Collection (gcc) для компиляции программы, разбора выходных данных программы и отображения результата в GNU Emacs. Emacs также поддерживает "подчиненные процессы" -долговременные процессы, которые взаимодействуют с буфером Emacs. Это используется для реализации shell-mode, выполняющего оболочку Unix как подчиненный процесс, а также цикл read-eval-print (REPL) режимы для различных языков программирования. Поддержка Emacs для внешних процессов делает его привлекательной средой для интерактивного программирования по линии Interlisp или Smalltalk .

Пользователи, предпочитающие IBM Common User Access-style keys, могут использовать cua-mode, пакет, который первоначально был сторонним дополнением, но был включен в GNU Emacs с версии 22.

Minibuffer[править]

Emacs использует "минибуфер", обычно самую нижнюю строку, чтобы представить статус и запросить информацию—функции, которые обычно выполнялись бы диалоговыми окнами в большинстве GUI. Минибуфер содержит такую информацию, как текст для поиска или имя файла для чтения или сохранения. Если это применимо, завершение командной строки доступно с помощью клавиш tab и space.

Управление файлами и отображение[править]

Emacs сохраняет текст в структурах данных, известных как буферы . Буферы могут или не могут отображаться на экране, и все функции буфера доступны как программе Emacs Lisp, так и пользовательскому интерфейсу.[21] пользователь может создавать новые буферы и удалять ненужные, и многие буферы могут существовать одновременно. Нет верхнего предела на количество буферов Emacs позволяет, кроме ограничений аппаратной памяти. Продвинутые пользователи могут накапливать сотни открытых буферов различных типов, относящихся к их текущей работе.[22] Emacs можно настроить для сохранения списка открытых буферов при выходе и повторного открытия этого списка при его перезапуске.[23]

Некоторые буферы содержат текст, загруженный из текстовых файлов, которые пользователь может редактировать и сохранять обратно в постоянное хранилище. Эти буферы, как говорят," посещающие " файлы. Буферы также служат для отображения других данных, таких как выходные данные команд Emacs, списки директорий dired, строки документации, отображаемые библиотекой "справка", и сообщения уведомлений, которые в других редакторах будут отображаться в диалоговом окне . Некоторые из этих уведомлений кратко отображаются в minubuffer, и GNU Emacs предоставляет * сообщения* буфер, который хранит историю последних уведомлений этого типа. Когда минибуфер используется для вывода из Emacs, он называется "область Эха".[24] Более длинные уведомления отображаются в собственных буферах. Максимальная длина сообщений, которые будут отображаться в минибуфере, конечно, настраивается.

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

Большинство ключевых последовательностей Emacs остаются функциональными в любом буфере. Например, стандартная функция Ctrl-s isearchможет использоваться для поиска имен файлов в буферах dired, а список файлов может быть сохранен в текстовый файл, как и любой другой буфер. буферы dired можно переключить в режим записи, в котором имена файлов и атрибуты могут редактироваться текстовым способом; при сохранении буфера изменения записываются в файловую систему. Это позволяет переименовывать несколько файлов с помощью функций поиска и замены Emacs. Emacs отображает файлы изображений в буферах. Emacs является двоичным безопасным и 8-битным чистым.[25]

Emacs может разделить область редактирования на отдельные разделы, называемые "windows", функция, которая была доступна с 1975 года, предшествуя графическому интерфейсу пользователя в общем использовании. В терминологии Emacs, "окна" похожи на то, что другие системы называют "фреймами" или "панелями" – прямоугольная часть дисплея программы, которая может быть обновлена и взаимодействовать с независимо. Каждое окно Emacs имеет строку состояния вызывается "линия режима", отображаемая по умолчанию в нижней части окна. Окна Emacs доступны как в текстовом, так и в графическом режимах и позволяют одновременно отображать несколько буферов или несколько частей буфера. Общие приложения для отображения буфера dired вместе с содержимым файлов в текущем каталоге (есть специальные режимы, чтобы сделать буфер файла следовать файл, выделенный в dired), для отображения исходного кода программы в одном окне в то время как другой отображает оболочку буфер с результатами компиляции программы, чтобы запустить отладчик, вместе с оболочкой буфера запуска программы, на работу код во время отображения страницы или другие документы (возможно по всемирной паутине , используя одну из редактора Emacs' встроенный в веб-браузеры), или просто для отображения нескольких файлов для редактирования сразу, такие как заголовок, наряду с его реализацией файл для C-языков. Кроме того , существует режим следования, дополнительный режим, который связывает окна для отображения неперекрывающихся частей буфера. Использование следующего режима, один файл может отображаться в нескольких параллельных окнах, которые обновляются соответствующим образом при прокрутке. Окна Emacs выложены плиткой и не могут отображаться "выше" или "ниже" своих компаньонов. Emacs может запускать несколько "кадров", которые отображаются в виде отдельных окон в графической среде. На текстовом терминале отображается несколько кадров, заполняющих весь терминал, и их можно переключать с помощью стандартных команд Emacs.

Основные режимы[править]

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

  • Подсветка синтаксиса ("блокировка шрифта"): комбинации шрифтов и цветов, называемых" гранями " , которые различают такие элементы документа, как ключевые слова и комментарии .
  • Автоматический отступ для поддержания согласованного форматирования в файле.
  • Автоматическая вставка элементов, требуемых структурой документа, таких как пробелы, новые строки и скобки.
  • Специальные команды редактирования, такие как команды для перехода к началу или концу функции при редактировании файла программирования или команды для проверки документов или вставки закрывающих тегов при работе с языками разметки, такими как XML .

Незначительные режимы[править]

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

"Пакетный режим"[править]

GNU Emacs поддерживает возможность использовать его в качестве интерпретатора языка Emacs Lisp без отображения пользовательского интерфейса текстового редактора. В пакетном режиме Конфигурация пользователя не загружается, и символы прерывания терминала C-c и C-z будут иметь свой обычный эффект выхода из программы или приостановки выполнения вместо вызова Привязок ключей Emacs. GNU Emacs имеет параметры командной строки для указания файла для загрузки и выполнения, или функция Emacs Lisp может быть передана из командной строки. Emacs запустится, выполнит переданный файл или функцию, распечатает результаты и выйдет.[28] shebang line #!/usr/bin/emacs --scriptпозволяет создавать автономные скрипты в Emacs Lisp.[29] Пакетный режим не является режимом Emacs как таковым, но описывает альтернативный режим выполнения для программы Emacs.

Инструкции[править]

Помимо встроенной документации, GNU Emacs имеет необычно длинное и подробное руководство .[требуется цитирование ] электронная копия руководства GNU Emacs, написанная Ричардом Столманом, поставляется в комплекте с GNU Emacs и может быть просмотрена со встроенным информационным браузером. Два дополнительных руководства, справочник Emacs Lisp Bil Lewis, Richard Stallman и Dan Laliberte и введение в программирование в Emacs Lisp Robert Chassell , включены. Все три руководства также опубликованы в виде книги Фондом свободного программного обеспечения . Руководство XEmacs похоже на руководство GNU Emacs, от которого он раздвоился одновременно с тем, что программное обеспечение XEmacs раздвоилось от GNU Emacs.

Интернационализация[править]

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

Поддерживаются многие системы кодирования символов, включая UTF-8. GNU Emacs использует UTF-8 для своей кодировки с GNU 23, в то время как предыдущие версии использовали свою собственную кодировку внутри и выполняли преобразование при загрузке и сохранении. Внутренняя кодировка, используемая XEmacs, похожа на кодировку GNU Emacs, но отличается в деталях.

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

Подсистема Emacspeak позволяет слабовидящим и слепым пользователям управлять редактором с помощью обратной связи по звуку.

Расширяемость[править]

Поведение GNU Emacs может быть изменено и расширено почти без ограничений путем включения программ Emacs Lisp, которые определяют новые команды, новые буферные режимы, новые карты клавиш, добавляют параметры командной строки, [30] и так далее. Многие расширения, предоставляющие функциональность, ориентированную на пользователя, определяют основной режим (либо для нового типа файлов, либо для построения пользовательского интерфейса без редактирования текста); другие определяют только команды или второстепенные режимы или предоставляют функции, расширяющие другое расширение.

Многие расширения поставляются в комплекте с установкой GNU Emacs; другие ранее загружались как свободные файлы (Usenet newsgroup gnu.emacs.sources был традиционным источником), но существует разработка управляемых пакетов и сайтов загрузки пакетов с версии 24, со встроенным менеджером пакетов (сам по себе расширение) для загрузки, установки и поддержания их в актуальном состоянии.

Несколько примеров включают:

  • AUCTeX, инструменты для редактирования и обработки документов TeX и LaTeX
  • Calc, мощный цифровой калькулятор RPN
  • Календарь-режим, для ведения календарей встреч и дневников
  • dired, файловый менеджер
  • Диссоциированная печать, генератор текста, похожий на Racter
  • Доктор, моделирование психоанализа, вдохновленное ELIZA
  • Dunnet, текстовое приключение
  • Ediff и Emerge, для сравнения и объединения файлов в интерактивном режиме.
  • Несколько веб-браузеров различных возможностей, начиная от полностью текстовых до тех, которые способны отображать графику и рудиментарные стили на дисплеях GUI:
    • Emacs / W3, самый старый, написанный в 1990-х годах для пакета Сумо XEmacs (не поддерживается).
    • emacs-w3m (в активной разработке непрерывно с 1990-х годов).
    • Emacs Web Wowser (eww), внутренний проект emacs и предварительно встроенный в современный emacsen.
  • Emacs говорит о режимах статистики (ESS) для редактирования статистических языков, таких как R и SAS
  • ERC и rcirc и Circe, IRC клиенты [31]
  • Eshell, оболочка командной строки, написанная на Emacs Lisp. Это позволяет более тесной интеграции со средой Emacs, чем стандартные оболочки , такие как bash или PowerShell, которые также доступны из Emacs. Например, в Eshell функции Elisp доступны в качестве команд оболочки, а выходные данные из команд Unix могут быть перенаправлены в буфер Emacs.
  • Exwm, X window manager, позволяющий запускать приложения X11 в окне Emacs.
  • Gnus, полнофункциональный клиент новостей (newsreader) и почтовый клиент и ранние доказательства закона Завинского
  • Magit, для работы с системой управления версиями Git
  • Mediawiki-режим редактирования страниц проектов MediaWiki
  • Многоязычное улучшение Emacs (MULE ) позволяет редактировать текст на нескольких языках способом, несколько похожим на Unicode
  • Org-режим для ведения заметок, ведения различных типов списков, планирования и измерения проектов и составления документов во многих форматах (таких как PDF , HTML или OpenDocument). Существуют статические генераторы сайтов, использующие орг режим, а также расширение Babel, позволяющее использовать его для грамотного программирования .[35]
  • Планировщик, персональный информационный менеджер
  • Простая электронная таблица Emacs (SES), стандартный режим предоставления электронной таблицы
  • Режим взаимодействия SQL, режим для взаимодействия с различными вкусами серверов баз данных SQL .
  • Улучшенный режим взаимодействия Lisp для Emacs (SLIME ) расширяет GNU Emacs в среду разработки для Common Lisp . С SLIME (написан на Emacs Lisp) редактор GNU Emacs взаимодействует с общей системой Lisp (используя Swank backend) по специальному протоколу связи и предоставляет такие инструменты , как цикл чтения–оценки–печати, инспектор данных и отладчик .
  • Texinfo (Info), онлайн-справка-браузер
  • Просмотр почты (VM), другого полнофункционального почтового клиента
  • Viper, слой эмуляции vi; [37] также, зло, слой эмуляции Vim
  • Wanderlust, универсальный клиент электронной почты и новостей
  • Зона, режим взлома дисплея, включающий различные текстовые эффекты.

Производительность[править]

GNU Emacs часто работал заметно медленнее, чем конкурирующие текстовые редакторы в системах, в которых он был впервые реализован, потому что загрузка и интерпретация его кода на основе Lisp влечет за собой издержки производительности. Современные компьютеры достаточно мощны, чтобы запустить GNU Emacs без замедления, но версии до 19.29 (выпущенные в 1995 году) не могли редактировать файлы размером более 8 МБ. Ограничение размера файла было увеличено в последующих версиях, и 32-разрядные версии после GNU Emacs 23.2 могут редактировать файлы размером до 512 МБ. Emacs, скомпилированный на 64-разрядной машине, может обрабатывать гораздо большие буферы.[

Платформы[править]

GNU Emacs стала одной из самых популярных нетривиальных компьютерных программ и работает на самых разных операционных системах , включая DOS , Windows [40] [41] [42] и OpenVMS . Поддержка некоторых "устаревших платформ была удалена в Emacs 23.1", таких как виртуальные машины и большинство вариантов Unix (за исключением тех, которые основаны на Linux).[2] он доступен для большинства Unix-подобных операционных систем, таких как Linux , различные BSD , Solaris , AIX , HP-UX и macOS , [43] [44] и часто входит в их пакеты установки системы. Собственные порты GNU Emacs существуют для Android [45] и Nokia Maemo .[46]

GNU Emacs работает как на текстовых терминалах, так и в средах графического интерфейса пользователя (GUI). В Unix-подобных операционных системах GNU Emacs может использовать X Window System для создания своего GUI либо непосредственно с помощью виджетов Athena, либо с помощью "инструментария виджетов", такого как Motif , LessTif или GTK+ . GNU Emacs также может использовать графические системы, встроенные в macOS и Windows , чтобы предоставить меню , панели инструментов, полосы прокрутки и контекстные меню, более соответствующие внешнему виду каждой платформы .

Forks[править]

XEmacs[править]

Основная статья: XEmacs

Lucid Emacs, основанный на ранней версии GNU Emacs 19, был разработан в 1991 году Джейми Завински и другими сотрудниками Lucid Inc. Один из самых известных развилок в разработке свободных программ произошел, когда кодовые базы двух версий Emacs разошлись и отдельные команды разработчиков прекратили попытки объединить их обратно в одну программу.[47] после того, как Lucid подал заявление о банкротстве, Lucid Emacs был переименован в XEmacs и остается второй по популярности разновидностью Emacs после GNU Emacs.[ требуется цитирование] Разработка XEmacs замедлилась, последняя стабильная версия 21.4.22 была выпущена в январе 2009 года, в то время как GNU Emacs реализовала многие ранее доступные только XEmacs функции. Это привело некоторых пользователей к объявлению о смерти XEmacs.

Другие вилки GNU Emacs[править]

Другие вилки, менее известные, чем XEmacs, включают:

  • Meadow-японская версия для Microsoft Windows
  • Sxemacs-вилка Стива Янгса XEmacs
  • Aquamacs-версия, которая фокусируется на интеграции с пользовательским интерфейсом Apple Macintosh
  • Remacs-порт GNU Emacs для языка программирования Rust.

См.также[править]

Лио цель

Пруф[править]

gnu.org/software/emacs/