Emacs ( / ˈ iː m æ k s / ), первоначально названныйEMACS(аббревиатура от «Editor Macros»),[1][2][3]представляет собой семействотекстовых редакторов, характеризующихся своейрасширяемостью.[4]Руководство по наиболее широко используемому варианту,[5] GNU Emacs, описывает его как «расширяемый, настраиваемый, самодокументируемый редактор отображения в реальном времени».[6]Разработка первого Emacs началась в середине 1970-х годов,[7][8]и работа над GNU Emacs, напрямую произошедшим от оригинала, продолжается; его последняя версия — 29.4[9] , выпущен в июне 2024 г.
Emacs имеет более 10 000 встроенных команд, а его пользовательский интерфейс позволяет пользователю объединять эти команды в макросы для автоматизации работы. Реализации Emacs обычно содержат диалект языка программирования Lisp , что позволяет пользователям и разработчикам писать новые команды и приложения для редактора. Расширения были написаны, среди прочего, для управления файлами , удаленным доступом , [10] электронной почтой , контурами , мультимедиа , интеграцией с Git , RSS- каналами, [11] и совместным редактированием , [12] а также реализациями ELIZA , Pong , Conway's Life , Snake , Dunnet и Tetris . [13]
Оригинальный EMACS был написан в 1976 году Дэвидом А. Муном и Гаем Л. Стилом-младшим как набор макросов для редактора TECO . [14] [1] [2] [3] [15] Он был вдохновлен идеями редакторов макросов TECO TECMAC и TMACS. [16]
Самая популярная и наиболее портированная версия Emacs — GNU Emacs, созданная Ричардом Столлманом для проекта GNU . [17] XEmacs — это вариант, ответвившийся от GNU Emacs в 1991 году. GNU Emacs и XEmacs используют похожие диалекты Lisp и, по большей части, совместимы друг с другом. Разработка XEmacs неактивна.
GNU Emacs , наряду с vi , является одним из двух главных претендентов в традиционных войнах редакторов в культуре Unix . GNU Emacs является одним из старейших свободных и открытых проектов, все еще находящихся в разработке. [18]
Разработка Emacs началась в 1970-х годах в лаборатории ИИ Массачусетского технологического института , чьи компьютеры PDP-6 и PDP-10 использовали операционную систему Incompatible Timesharing System (ITS) , которая включала в себя редактор строк по умолчанию, известный как Tape Editor and Corrector (TECO). В отличие от большинства современных текстовых редакторов, TECO использовал отдельные режимы, в которых пользователь либо добавлял текст, либо редактировал существующий текст, либо отображал документ. Нельзя было помещать символы непосредственно в документ, набирая их в TECO, вместо этого нужно было ввести символ ('i') на языке команд TECO, сообщая ему о необходимости переключиться в режим ввода, ввести требуемые символы, в течение которого отредактированный текст не отображался на экране, и, наконец, ввести символ (<esc>), чтобы переключить редактор обратно в режим команд. (Похожая техника использовалась для разрешения перепечатки.) Это поведение похоже на поведение программы ed .
К 1970-м годам TECO уже была старой программой, первоначально выпущенной в 1962 году. Ричард Столлман посетил Стэнфордскую лабораторию искусственного интеллекта в 1976 году [20] и увидел редактор E лаборатории , написанный Фредом Райтом. [21] Он был впечатлен интуитивным поведением редактора WYSIWYG (What You See Is What You Get), которое с тех пор стало поведением по умолчанию большинства современных текстовых редакторов. Он вернулся в MIT, где Карл Миккельсен, хакер из Лаборатории искусственного интеллекта, добавил в TECO комбинированный режим отображения/редактирования под названием Control-R , который позволял обновлять экранное отображение каждый раз, когда пользователь нажимал клавишу. Столлман переписал этот режим для эффективной работы, а затем добавил функцию макроса в режим редактирования отображения TECO, которая позволяла пользователю переопределять любое нажатие клавиши для запуска программы TECO. [3]
E имела еще одну функцию, которой не хватало TECO: редактирование с произвольным доступом. TECO был редактором с постраничным доступом, который был разработан для редактирования бумажной ленты на PDP-1 в то время, когда компьютерная память была, как правило, небольшой из-за стоимости, и это была функция TECO, которая позволяла редактировать только одну страницу за раз последовательно в порядке страниц в файле. Вместо того чтобы принять подход E по структурированию файла для постраничного доступа на диске, Столлман модифицировал TECO для более эффективной обработки больших буферов и изменил его метод управления файлами для чтения, редактирования и записи всего файла как одного буфера. Почти все современные редакторы используют этот подход.
Новая версия TECO быстро стала популярной в AI Lab и вскоре собрала большую коллекцию пользовательских макросов, чьи имена часто заканчивались на MAC или MACS , что означало macro . Два года спустя Гай Стил взялся за проект по объединению разнообразных макросов в один набор. [22] Завершенная реализация Стила и Столлмана включала средства для расширения и документирования нового набора макросов. [3] Полученная система была названа EMACS, что означало Editing MACroS или, альтернативно, E with MACroS . Столлман выбрал название Emacs «потому что <E> не использовалось как аббревиатура в ITS в то время». [23] Апокрифический хакерский коан утверждает, что программа была названа в честь Emack & Bolio's , популярного бостонского магазина мороженого. [24] Первая действующая система EMACS существовала в конце 1976 года. [25]
Столлман увидел проблему в слишком большой настройке и фактическом разветвлении и установил определенные условия для использования. [ необходима цитата ] Позже он написал: [25]
EMACS распространялся на основе коллективного использования, что означает, что все улучшения должны быть возвращены мне для внедрения и распространения.
Оригинальный Emacs, как и TECO, работал только на PDP-10 с ITS. Его поведение достаточно отличалось от поведения TECO, чтобы его можно было считать самостоятельным текстовым редактором, и он быстро стал стандартной программой редактирования на ITS. Майк Макмахон перенес Emacs из ITS в операционные системы TENEX и TOPS-20 . Другими участниками ранних версий Emacs были Кент Питман , Эрл Киллиан и Юджин Чиккарелли. К 1979 году Emacs стал основным редактором, используемым в лаборатории искусственного интеллекта Массачусетского технологического института и ее Лаборатории компьютерных наук. [26]
В последующие годы программисты написали множество редакторов, подобных Emacs, для других компьютерных систем. К ним относятся EINE ( EINE Is Not EMACS ) и ZWEI [27] ( ZWEI Was EINE Первоначально ), которые были написаны для машины Lisp Майком Макмахоном и Дэниелом Вайнребом , и Sine ( Sine Is Not Eine ), [28] который был написан Оуэном Теодором Андерсоном. EINE Вайнреба был первым Emacs, написанным на Lisp. В 1978 году Бернард Гринберг написал Multics Emacs почти полностью на Multics Lisp в Cambridge Information Systems Lab компании Honeywell . Позднее Multics Emacs поддерживался Ричардом Соли , который продолжил разработку редактора NILE Emacs для проекта NIL, и Барри Марголином. Многие версии Emacs, включая GNU Emacs, позже приняли Lisp в качестве языка расширений.
Джеймс Гослинг , который позже изобрел NeWS и язык программирования Java , написал Gosling Emacs в 1981 году. Первый редактор типа Emacs, работающий в Unix [ необходима ссылка ] , Gosling Emacs был написан на языке C и использовал Mocklisp , язык с синтаксисом, подобным Lisp, в качестве языка расширений.
Ранняя реклама CCA EMACS (Стив Циммерман) [29] от Computer Corporation of America появилась в 1984 году. [30] Сравнение с GNU Emacs 1985 года, когда он только вышел, упоминало бесплатность против 2400 долларов. [31] [ нерелевантная цитата ]
Ричард Столлман начал работу над GNU Emacs в 1984 году, чтобы создать свободное программное обеспечение, альтернативное проприетарному Gosling Emacs. GNU Emacs изначально был основан на Gosling Emacs, но замена Столлманом интерпретатора Mocklisp на настоящий интерпретатор Lisp потребовала переписывания почти всего кода. Это стало первой программой, выпущенной зарождающимся проектом GNU. GNU Emacs написан на языке C и предоставляет Emacs Lisp , также реализованный на языке C, в качестве языка расширений. Версия 13, первый публичный релиз, была сделана 20 марта 1985 года. Первой широко распространенной версией GNU Emacs была версия 15.34, выпущенная позднее в 1985 году. Ранние версии GNU Emacs были пронумерованы как 1.xx , где начальная цифра обозначала версию ядра C. Цифра 1 была удалена после версии 1.12, поскольку считалось, что основной номер никогда не изменится, и поэтому нумерация пропустила 1 до 13. [ 32] В сентябре 2014 года в списке рассылки GNU emacs-devel было объявлено, что GNU Emacs примет стратегию быстрого выпуска, и в будущем номера версий будут увеличиваться быстрее. [33]
GNU Emacs предлагал больше возможностей, чем Gosling Emacs, в частности полнофункциональный Lisp в качестве языка расширения, и вскоре заменил Gosling Emacs в качестве фактического редактора Unix Emacs. Маркус Хесс использовал уязвимость безопасности в подсистеме электронной почты GNU Emacs в своей крэкерской кампании 1986 года, в ходе которой он получил доступ суперпользователя к компьютерам Unix. [34]
Большая часть функциональности GNU Emacs реализована посредством скриптового языка Emacs Lisp . Поскольку около 70% GNU Emacs написано на языке расширений Emacs Lisp, [35] требуется только портировать ядро C, реализующее интерпретатор Emacs Lisp. Это делает портирование Emacs на новую платформу значительно менее сложным, чем портирование эквивалентного проекта, состоящего только из собственного кода.
Разработка GNU Emacs была относительно закрытой до 1999 года и использовалась в качестве примера стиля разработки Cathedral в The Cathedral и Bazaar . С тех пор проект принял публичный список рассылки по разработке и анонимный доступ к CVS . Разработка велась в единой ветке CVS до 2008 года, а затем была переключена на Bazaar DVCS . 11 ноября 2014 года разработка была перенесена на Git . [36]
Ричард Столлман остался главным сопровождающим GNU Emacs, но время от времени отходил от этой роли. Стефан Монье и Чонг Идонг были сопровождающими с 2008 по 2015 год. [37] [38] Джон Вигли был назначен сопровождающим в 2015 году после встречи со Столлманом в MIT. [39] По состоянию на начало 2014 года у GNU Emacs было 579 индивидуальных коммиттеров за всю его историю. [40]
Lucid Emacs, основанный на ранней альфа-версии GNU Emacs 19, был разработан в 1991 году Джейми Завински и другими в Lucid Inc. Одно из самых известных ранних ответвлений в разработке свободного программного обеспечения произошло, когда кодовые базы двух версий Emacs разошлись, и отдельные команды разработчиков прекратили попытки объединить их обратно в единую программу. [41] С тех пор Lucid Emacs был переименован в XEmacs . Его разработка в настоящее время неактивна, последняя стабильная версия 21.4.22 была выпущена в январе 2009 года (в то время как бета-версия была выпущена в 2013 году), в то время как GNU Emacs реализовал многие функции, ранее доступные только в XEmacs. [42] [ требуется лучший источник ]
Другие известные форки включают в себя:
В прошлом проекты, направленные на создание небольших версий Emacs, множились. GNU Emacs изначально был нацелен на компьютеры с 32-битным плоским адресным пространством и не менее 1 МБ оперативной памяти. [44] Такие компьютеры были высокопроизводительными рабочими станциями и мини-компьютерами в 1980-х годах, и это оставило потребность в меньших реализациях, которые могли бы работать на обычном оборудовании персональных компьютеров . Сегодняшние компьютеры имеют более чем достаточно мощности и емкости, чтобы устранить эти ограничения, но небольшие клоны были разработаны в последнее время для размещения на установочных дисках программного обеспечения или для использования на менее мощном оборудовании. [45]
Другие проекты нацелены на реализацию Emacs на другом диалекте Lisp или на другом языке программирования вообще. Хотя не все из них активно поддерживаются, эти клоны включают:
Emacs — это в первую очередь текстовый редактор , предназначенный для работы с фрагментами текста, хотя он способен форматировать и печатать документы как текстовый процессор , взаимодействуя с внешними программами, такими как LaTeX , Ghostscript или веб-браузер. Emacs предоставляет команды для работы и дифференцированного отображения семантических единиц текста, таких как слова , предложения , абзацы и конструкции исходного кода , такие как функции . Он также содержит клавиатурные макросы для выполнения определяемых пользователем пакетов команд редактирования.
GNU Emacs — это редактор отображения в реальном времени , поскольку его правки отображаются на экране по мере их внесения. Это стандартное поведение для современных текстовых редакторов, но EMACS был одним из первых, кто реализовал это. Альтернативой является необходимость выдавать отдельную команду для отображения текста (например, до или после его изменения). Это было распространено в более ранних (или просто более простых) редакторах строк и контекста, таких как QED (BTS, CTSS, Multics), ed (Unix), ED (CP/M) и Edlin (DOS).
Почти все функциональные возможности Emacs, включая базовые операции редактирования, такие как вставка символов в файл, достигаются с помощью функций, написанных на диалекте языка программирования Lisp . Диалект, используемый в GNU Emacs, известен как Emacs Lisp (Elisp) и был разработан специально для переноса Emacs на GNU и Unix . Слой Emacs Lisp находится поверх стабильного ядра базовых служб и абстракции платформы, написанной на языке программирования C , что позволяет переносить GNU Emacs на широкий спектр операционных систем и архитектур без изменения семантики реализации системы Lisp, в которой находится большая часть редактора. В этой среде Lisp переменные и функции могут быть изменены без необходимости перекомпилировать или перезапустить Emacs, при этом даже недавно переопределенные версии основных функций редактора асинхронно компилируются и загружаются в живую среду для замены существующих определений. Современный GNU Emacs поддерживает как компиляцию байт-кода , так и машинного кода для Emacs Lisp.
Вся конфигурация хранится в переменных, классах и структурах данных и изменяется путем простого обновления их в реальном времени. Использование диалекта Lisp в этом случае является ключевым преимуществом, поскольку синтаксис Lisp состоит из так называемых символических выражений (или sexeprs), которые могут действовать как оцениваемые выражения кода и как формат сериализации данных , похожий на известные, такие как XML , JSON и YAML , но более простой и общий . Таким образом, на практике нет большой разницы между настройкой существующих функций и написанием новых, оба из которых выполняются одним и тем же базовым способом. Это функционально отличается от большинства современных расширяемых редакторов, например, таких как VS Code , в которых для реализации интерфейса и функций редактора и для кодирования его определяемой пользователем конфигурации и опций используются отдельные языки. Целью открытого дизайна Emacs является прозрачное предоставление внутренних компонентов Emacs пользователю Emacs во время обычного использования таким же образом, как они были бы доступны разработчику Emacs, работающему с деревом git , и максимальное стирание различий между использованием Emacs и программированием в Emacs, при этом обеспечивая стабильную, практичную и отзывчивую среду редактирования для начинающих пользователей.
Основная структура данных редактирования текста — это буфер , область памяти, содержащая данные (обычно текст) с соответствующими атрибутами. Наиболее важными из них являются:
Режимы , в частности, являются важной концепцией в Emacs, предоставляя механизм для разложения функциональности Emacs на наборы поведений и сочетаний клавиш, относящихся к данным определенных буферов. Основные режимы предоставляют общий пакет функций и команд, относящихся к данным буфера и способу взаимодействия пользователей с ними (например, редактирование исходного кода на определенном языке, редактирование hex , просмотр файловой системы, взаимодействие с git и т. д.), а второстепенные режимы определяют вспомогательные наборы функциональности, применимые ко многим основным режимам (например, auto-save-mode
). Второстепенные режимы можно включать и выключать как локально для каждого буфера, так и глобально для всех буферов, в то время как основные режимы можно переключать только для каждого буфера. Любые другие данные, относящиеся к буферу, но не объединенные в режим, можно обрабатывать, просто фокусируясь на этом буфере и напрямую изменяя соответствующие данные в реальном времени.
Любое взаимодействие с редактором (например, нажатие клавиш или щелчок кнопкой мыши) реализуется путем оценки кода Emacs Lisp, обычно команды , которая является функцией, явно разработанной для интерактивного использования. Клавиши могут быть произвольно переопределены, а к командам также можно обращаться по имени; некоторые команды оценивают произвольный код Emacs Lisp, предоставленный пользователем различными способами (например, семейство eval-
функций, работающих с buffer
, region
, или отдельным expression
). Даже простейшие пользовательский ввод (например, печатные символы ) осуществляются как функции Emacs Lisp, такие как self-insert-command
, привязанные по умолчанию к большинству клавиш клавиатуры в типичном буфере редактирования текста, который параметризуется с помощью символа, определенного в локали, связанного с клавишей, используемой для его вызова.
Например, нажатие fклавиши в буфере, принимающем текстовый ввод, вычисляет код , который вставляет одну копию символьной константы в точку . В этом случае определяется тем, что Emacs называет универсальным аргументом : весь код команды Emacs принимает числовое значение, которое в простейшем использовании указывает на повторение действия, но в более сложных случаях (где повторение не имеет смысла) может давать другие поведения. Эти аргументы могут быть предоставлены через префиксы команд, такие как + , или более компактно + , который расширяется до . Если префикс не указан, универсальным аргументом является : каждая команда неявно выполняется один раз, но может быть вызвана умножением или другим способом, если указан такой префикс. Такие аргументы также могут быть неположительными, когда это имеет смысл — функция, принимающая аргумент, должна определить, в соответствии со своей собственной семантикой, что для нее означает данное число. Одним из распространенных вариантов использования функций является выполнение действий в обратном порядке путем простой проверки знака универсального аргумента, например, команда сортировки, которая по умолчанию сортирует в прямом порядке, а при вызове с отрицательным аргументом — в обратном, используя абсолютное значение своего аргумента в качестве ключа сортировки (например, сортировка в обратном порядке по индексу столбца (или разделителю) 7), или команды отмены/повтора, которые просто являются отрицательными значениями друг друга (проход вперед и назад по рекурсивной истории различий на определенное количество шагов за раз).(self-insert-command 1 ?f)
?f
1
Controlu 7 fMeta7 f(self-insert-command 7 ?f)
1
-7
Из-за своего относительно большого словаря команд Emacs имеет давно устоявшийся командный язык , чтобы кратко выразить нажатия клавиш, необходимые для выполнения действия. Этот командный язык распознает следующие клавиши shift и модификаторы: , , , , , и . Не все из них могут присутствовать на клавиатуре в стиле IBM, хотя обычно их можно настроить по желанию. Они представлены в командном языке как соответствующие префиксы: , , , , , и . Клавиши, названия которых можно напечатать только с более чем одним символом, заключены в угловые скобки. Таким образом, сочетание клавиш, такое как + + + (проверить зависимые формулы и вычислить все ячейки во всех открытых книгах Excel ), будет отображаться в командном языке Emacs как , в то время как команда Emacs, такая как + + + (инкрементный поиск файлов по регулярному выражению , совпадающему с именем файла ), будет выражаться как . Командный язык также используется для выражения действий, необходимых для вызова команд без назначенных сочетаний клавиш: например, команда (которая инициализирует буфер в памяти для временного хранения и обработки текста) при вызове ее пользователем будет возвращена как , при этом Emacs просматривает пространство имен контекстно-доступных команд, чтобы вернуть кратчайшую последовательность нажатий клавиш, которая однозначно ее лексически описывает.CtrlAlt⇧ ShiftMetaSuperHyperC-
A-
S-
M-
s-
H-
CtrlAlt⇧ ShiftF9C-A-S-<f9>
Metas f CtrlMetasM-s f C-M-s
scratch-buffer
M-x scra <return>
Поскольку Emacs предшествует современной стандартной терминологии для графических пользовательских интерфейсов , он использует несколько отличающиеся названия для знакомых элементов интерфейса. Буферы, данные, с которыми взаимодействуют пользователи Emacs, отображаются для пользователя внутри окон , которые представляют собой мозаичные части экрана терминала или окна GUI, которые Emacs называет фреймами ; в современной терминологии фрейм Emacs будет окном, а окно Emacs будет разделением. В зависимости от конфигурации окна могут включать собственные полосы прокрутки, номера строк, иногда «строку заголовка», как правило, для облегчения навигации, и строку режима внизу (обычно отображающую имя буфера, активные режимы и позицию точки буфера среди прочего). Нижняя часть каждого фрейма используется для вывода сообщений (тогда называемых «эхо-областью») и ввода текста для команд (тогда называемых «минибуфером»).
В целом, элементы отображения Emacs (окна, фреймы и т. д.) не принадлежат каким-либо конкретным данным или процессу. Буферы не связаны с окнами, и несколько окон могут быть открыты в одном и том же буфере, например, для отслеживания разных частей длинного текста бок о бок без прокрутки вперед и назад, и несколько буферов могут совместно использовать один и тот же текст, например, для использования различных основных режимов в файле на разных языках. Аналогично, экземпляры Emacs не связаны с конкретными фреймами, и несколько фреймов могут быть открыты, отображая один работающий процесс Emacs, например, фрейм на экран в конфигурации с несколькими мониторами или фрейм терминала, подключенный через ssh из удаленной системы, и графический фрейм, отображающий тот же процесс Emacs через монитор локальной системы.
Так же, как буферы не требуют окон, работающие процессы Emacs не требуют никаких фреймов, и одним из распространенных шаблонов использования является развертывание Emacs в качестве сервера редактирования : запуск его как headless daemon и подключение к нему через клиент, порождающий фреймы. Затем этот сервер можно сделать доступным в любой ситуации, когда требуется редактор, просто объявив клиентскую программу пользователем EDITOR
или VISUAL
переменной. Такой сервер продолжает работать в фоновом режиме, управляя любыми дочерними процессами, накапливая stdin из открытых каналов, портов или fifo, выполняя периодические или заранее запрограммированные действия и запоминая историю отмены буфера, сохраненные фрагменты текста, историю команд и другое состояние пользователя между сеансами редактирования. В этом режиме работы Emacs перекрывает функциональность таких программ, как screen и tmux .
Благодаря разделению задач отображения и функций редактирования Emacs может отображать данные примерно одинаково на любом устройстве, более сложном, чем простой терминал , включая предоставление типичных графических элементов WIMP на достаточно функциональных текстовых терминалах, хотя графические фреймы являются предпочтительным режимом отображения, предоставляя строгое расширение возможностей фреймов текстовых терминалов.
(set-default-coding-systems 'utf-8)
(global-set-key (kbd "C-x C-b") 'ibuffer)
after-save-hook
)Первый Emacs содержал библиотеку справки , которая включала документацию для каждой команды, переменной и внутренней функции. Из-за этого сторонники Emacs описывали программное обеспечение как самодокументирующееся , поскольку оно предоставляет пользователю информацию о своих обычных функциях и текущем состоянии. Каждая функция включает строку документации, которая отображается пользователю по запросу, практика, которая впоследствии распространилась на языки программирования, включая Lisp , Java , Perl и Python . Эта система справки может перенаправлять пользователей к фактическому коду для каждой функции, будь то из встроенной библиотеки или из добавленной сторонней библиотеки.
Emacs также имеет встроенный учебник . Emacs отображает инструкции по выполнению простых команд редактирования и вызову учебника, когда он запущен без файла для редактирования. Автор учебника — Стюарт Кракрафт и Ричард Столлман.
Церковь Emacs , основанная Ричардом Столлманом , является пародийной религией, созданной для пользователей Emacs. [52] Хотя она называет vi редактором зверя (vi-vi-vi — это 6-6-6 в римской записи), она не выступает против использования vi; скорее, она называет его анафемой проприетарного программного обеспечения . («Использование бесплатной версии vi — не грех, а покаяние » . [53] ) Церковь Emacs имеет свою собственную группу новостей , alt.religion.emacs , [54] в которой есть сообщения, якобы поддерживающие эту пародийную религию. Сторонники vi создали оппозиционный Культ vi .
Столлман в шутку называл себя St I GNU cius , святым в Церкви Emacs. [55] Это отсылка к Игнатию Антиохийскому , раннему отцу Церкви, почитаемому в христианстве.
Слово emacs иногда употребляется во множественном числе как emacsen , по фонетической аналогии с boxen и VAXen , что относится к различным разновидностям Emacs. [56]
Для того, чтобы редактор назывался "emacs", главное требование - он должен быть полностью расширяемым с помощью реального языка программирования, а не только макроязыка.
GNU Emacs — самый популярный и распространённый из семейства редакторов Emacs.
Наконец, если вы чувствуете себя расстроенным, попробуйте описать свои проблемы известному психотерапевту Элизе. Просто сделайте Mx doctor.
{{citation}}
: CS1 maint: неподходящий URL ( ссылка ).«EMACS как таковой фактически начинался как проект по стандартизации», — пишет Гай Стил по электронной почте
Однажды самоуверенный новичок сказал Столлману: "Я могу догадаться, почему редактор называется Emacs, но почему выравниватель называется Bolio?". Столлман решительно ответил: "Имена есть имена, Emack & Bolio's — это название популярного магазина мороженого в Бостоне. Никто из этих людей не имел никакого отношения к программному обеспечению". Его вопрос был решен, но так и не был дан, новичок повернулся, чтобы уйти, но Столлман окликнул его: "Ни Emacs, ни Bolio не имели никакого отношения к магазину мороженого".
Я написал второй Emacs в истории: реализацию машины Lisp, спецификация которой была "делать то, что делает Emacs Столлмана PDP-10 (оригинальный)", а затем продвинулся дальше. Его просто МНОГО. Мне и Майку Макмахону потребовалось бесконечное количество часов, чтобы реализовать так много команд для создания ZWEI/Zmacs.
Computer Corporation of America (CCA)
EMACS, написанный Стивом Циммерманом
Оглядываясь назад, 24.3 следовало назвать 25.1, а 24.4 следовало назвать 26.1.
.N-
штука действительно должна быть сохранена только для релизов с исправлением ошибок, и ни 24.3, ни 24.4, ни ранее запланированный 24.5 не являются релизами с исправлением ошибок.
двадцать девять лет непрерывной разработки не менее чем 579 людьми
В те дни, в 1985 году, были люди, у которых были машины на один мегабайт без виртуальной памяти. Они хотели иметь возможность использовать GNU Emacs. Это означало, что мне нужно было сделать программу как можно меньше.
Современные компьютеры имеют более чем достаточно ресурсов для запуска и работы полного Emacs за доли секунды, и Emacs, вероятно, то, что вам нужно. Zile - это небольшой, быстрый и мощный клон Emacs. Он полезен для небольших установок (например, на дискете), машин с небольшим объемом памяти или быстрых сеансов редактирования, особенно на удаленных машинах или в качестве другого пользователя, например, root.