stringtranslate.com

Эмакс

Emacs / ˈ m æ k s / , первоначально называвшийся EMACS (аббревиатура от «Editor Macros»), [1] [2] [3] — семейство текстовых редакторов , характеризующихся своей расширяемостью . [4] Руководство к наиболее широко используемому варианту, [5] GNU Emacs , описывает его как «расширяемый, настраиваемый, самодокументируемый редактор, отображаемый в реальном времени». [6] Разработка первого Emacs началась в середине 1970-х годов, [7] и работа над GNU Emacs, непосредственно произошедшим от оригинала, продолжается; его последняя версия — 29.2, выпущенная в январе 2024 года. [8]

Emacs имеет более 10 000 встроенных команд, а его пользовательский интерфейс позволяет пользователю объединять эти команды в макросы для автоматизации работы. Реализации Emacs обычно содержат диалект языка программирования Lisp , позволяющий пользователям и разработчикам писать новые команды и приложения для редактора. Были написаны расширения, среди прочего, для управления файлами , удаленного доступа , [9] электронной почты , контуров , мультимедиа , интеграции Git и RSS- каналов, [10] , а также реализации ELIZA , Pong , Conway's Life , Snake . , Даннет и Тетрис . [11]

Оригинальная версия EMACS была написана в 1976 году Дэвидом А. Муном и Гаем Л. Стилом-младшим как набор макросов для редактора TECO . [12] [1] [2] [3] [13] Он был вдохновлен идеями макроредакторов TECO TECMAC и TMACS. [14]

Самая популярная и наиболее портированная версия Emacs — GNU Emacs, созданная Ричардом Столлманом для проекта GNU . [15] XEmacs — это вариант, ответвленный от GNU Emacs в 1991 году. GNU Emacs и XEmacs используют схожие диалекты Lisp и по большей части совместимы друг с другом. Разработка XEmacs неактивна.

GNU Emacs , наряду с vi , является одним из двух главных соперников в традиционных войнах редакторов культуры Unix . GNU Emacs — один из старейших бесплатных проектов с открытым исходным кодом, которые все еще находятся в стадии разработки. [16]

История

Emacs был запущен Гаем Л. Стилом-младшим как проект по унификации множества различных наборов команд TECO и привязок клавиш в Массачусетском технологическом институте [2].
Дэвид А. Мун
На интерфейс Emacs повлиял дизайн клавиатуры Space-Cadet , который стремился дать пользователям возможность вводить как можно больше различных типов ввода. [17]

Разработка Emacs началась в 1970-х годах в Лаборатории искусственного интеллекта Массачусетского технологического института , чьи компьютеры PDP-6 и PDP-10 использовали операционную систему Inсовместимой системы разделения времени (ITS) , в которой по умолчанию использовался строковый редактор , известный как Tape Editor and Corrector (TECO). В отличие от большинства современных текстовых редакторов, в TECO использовались отдельные режимы, в которых пользователь либо добавлял текст, редактировал существующий текст, либо отображал документ. Нельзя было поместить символы непосредственно в документ, набрав их в TECO, вместо этого можно было ввести символ («i») на командном языке TECO, указывающий ему переключиться в режим ввода, ввести необходимые символы, в течение этого времени редактируемый текст не отображался на экране, и, наконец, введите символ (<esc>), чтобы переключить редактор обратно в командный режим. (Аналогичный метод использовался для разрешения перепечатывания.) Такое поведение аналогично поведению программы ed .

К 1970-м годам TECO уже была старой программой, первоначально выпущенной в 1962 году. Ричард Столлман посетил Стэнфордскую лабораторию искусственного интеллекта в 1976 году [18] и увидел редактор E , написанный Фредом Райтом. [19] Его впечатлило интуитивно понятное поведение редактора WYSIWYG («Что видишь, то и получаешь»), которое с тех пор стало стандартным поведением большинства современных текстовых редакторов. Он вернулся в Массачусетский технологический институт, где Карл Миккельсен, хакер из лаборатории искусственного интеллекта, добавил в TECO комбинированный режим отображения и редактирования под названием Control-R , который позволял обновлять изображение на экране каждый раз, когда пользователь нажимал клавишу. Столлман переопределил этот режим для более эффективной работы, а затем добавил функцию макроса в режим редактирования дисплея TECO, которая позволяла пользователю переопределять любое нажатие клавиши для запуска программы TECO. [3]

У E была еще одна функция, которой не хватало TECO: редактирование с произвольным доступом. TECO был редактором с последовательной постраничной обработкой, который был разработан для редактирования бумажной ленты на PDP-1 в то время, когда память компьютера обычно была небольшой из-за стоимости, и это была функция TECO, которая позволяла последовательно редактировать только одну страницу за раз. в порядке страниц в файле. Вместо того, чтобы использовать подход E по структурированию файла для произвольного постраничного доступа на диске, Столлман модифицировал TECO для более эффективной обработки больших буферов и изменил метод управления файлами, чтобы читать, редактировать и записывать весь файл как один буфер. Практически все современные редакторы используют этот подход.

Новая версия TECO быстро стала популярной в лаборатории искусственного интеллекта и вскоре собрала большую коллекцию пользовательских макросов, имена которых часто заканчивались на MAC или MACS , что означало макрос . Два года спустя Гай Стил взялся за проект объединения разнообразных макросов в единый набор. [20] Законченная реализация Стила и Столлмана включала средства для расширения и документирования нового набора макросов. [3] Получившаяся система получила название EMACS, что означало «Редактирование MACroS» или, альтернативно, E с MACroS . Столлман выбрал имя Emacs, «потому что <E> в то время не использовался в качестве аббревиатуры в ITS». [21] В апокрифическом хакерском коане утверждается, что программа была названа в честь Emack & Bolio's , популярного бостонского магазина мороженого. [22] Первая действующая система EMACS существовала в конце 1976 года. [23]

Столлман увидел проблему в слишком большой настройке и де-факто разветвлении и установил определенные условия для использования. [ нужна ссылка ] Позже он написал: [23]

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

Оригинальный Emacs, как и TECO, работал только на PDP-10 с ITS. Его поведение настолько отличалось от поведения TECO, что его можно было считать самостоятельным текстовым редактором, и он быстро стал стандартной программой редактирования в ITS. Майк МакМэхон портировал Emacs с ИТС на операционные системы «Техснабэкспорт» и ТОПС-20 . Среди других участников ранних версий Emacs — Кент Питман , Эрл Киллиан и Юджин Сиккарелли. К 1979 году Emacs был основным редактором, используемым в лаборатории искусственного интеллекта Массачусетского технологического института и его лаборатории компьютерных наук. [24]

Реализации

Ранние реализации

Zmacs , Emacs для машин Lisp , эволюция EINE и ZWEI.
Джеймс Гослинг написал редактор, похожий на Emacs, для работы в Unix ( Gosling Emacs ) в 1981 году.

В последующие годы программисты написали множество редакторов, подобных Emacs, для других компьютерных систем. К ним относятся EINE ( EINE Is Not EMACS ) и ZWEI [25] ( ZWEI Was EINE Initially ), которые были написаны для машины Lisp Майком МакМахоном и Дэниелом Вайнребом , и Sine ( Sine Is Not Eine ), [26] который был написан Оуэн Теодор Андерсон. EINE Вайнреба был первым Emacs, написанным на Lisp. В 1978 году Бернард Гринберг написал Multics Emacs почти полностью на Multics Lisp в Кембриджской лаборатории информационных систем компании Honeywell . Multics Emacs позже поддерживался Ричардом Соли , который продолжил разработку редактора, подобного NILE Emacs, для проекта NIL, и Барри Марголина. Многие версии Emacs, включая GNU Emacs, позже приняли Lisp в качестве языка расширения.

Джеймс Гослинг , который позже изобрел NeWS и язык программирования Java , написал Gosling Emacs в 1981 году . Первый Emacs - подобный редактор, работавший в Unix , Gosling Emacs был написан на C и использовал Mocklisp , язык с Lisp- как синтаксис, как язык расширения.

Ранняя реклама CCA EMACS американской компьютерной корпорации (Стив Циммерман) [27] появилась в 1984 году. [28] В сравнении 1985 года с GNU Emacs, когда он вышел, упоминалась бесплатная версия по сравнению с 2400 долларами. [29] [ неуместная цитата ]

ГНУ Эмакс

GNU Emacs работает в текстовой консоли
GNU Emacs, работающий в Microsoft Windows

Ричард Столлман начал работу над 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 . [30] В сентябре 2014 года в списке рассылки GNU emacs-devel было объявлено, что GNU Emacs примет стратегию быстрого выпуска, и в будущем номера версий будут увеличиваться быстрее. [31]

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

Большая часть функциональности GNU Emacs реализована посредством языка сценариев Emacs Lisp . Поскольку около 70% GNU Emacs написано на языке расширения Emacs Lisp [33] , достаточно портировать только ядро ​​C, которое реализует интерпретатор Emacs Lisp. Это делает портирование Emacs на новую платформу значительно менее сложным, чем портирование эквивалентного проекта, состоящего только из собственного кода.

Разработка GNU Emacs была относительно закрыта до 1999 года и использовалась в качестве примера стиля разработки Cathedral в The Cathedral and the Bazaar . С тех пор проект принял общедоступный список рассылки для разработчиков и анонимный доступ к CVS . Разработка велась в едином стволе CVS до 2008 года, а затем была переключена на Bazaar DVCS . 11 ноября 2014 года разработка была перенесена на Git . [34]

Файл C в Emacs 27 с темой modus-operandi.

Ричард Столлман оставался главным разработчиком GNU Emacs, но время от времени отходил от этой роли. Стефан Монье и Чонг Идонг занимались сопровождением с 2008 по 2015 год. [35] [36] Джон Вигли был назначен сопровождающим в 2015 году после встречи со Столлманом в Массачусетском технологическом институте. [37] По состоянию на начало 2014 года за всю историю существования GNU Emacs насчитывалось 579 отдельных коммиттеров . [38]

XEmacs

XEmacs 21.5 в Linux

Lucid Emacs, основанный на ранней альфа-версии GNU Emacs 19, был разработан в 1991 году Джейми Завински и другими сотрудниками Lucid Inc. Одно из самых известных ранних ответвлений в разработке свободного программного обеспечения произошло, когда кодовые базы двух версий Emacs разошлись. и отдельные команды разработчиков прекратили попытки объединить их обратно в единую программу. [39] С тех пор Lucid Emacs был переименован в XEmacs . Его разработка в настоящее время неактивна: самая последняя стабильная версия 21.4.22 выпущена в январе 2009 года (в то время как бета-версия была выпущена в 2013 году), в то время как в GNU Emacs реализованы многие функции, которые раньше были доступны только для XEmacs. [40] [ нужен лучший источник ]

Другие версии GNU Emacs

Другие известные форки включают:

Различные редакторы Emacs

uEmacs/Pk 4.0.15 в Linux
Крошечный редактор mg , похожий на Emacs, в OpenBSD 5.3. Редактирование исходного кода Ruby
JOVE работает в системе Debian

В прошлом проекты, направленные на создание небольших версий Emacs, быстро распространялись. GNU Emacs изначально был ориентирован на компьютеры с 32-битным плоским адресным пространством и объемом  оперативной памяти не менее 1 МБ . [42] В 1980-е годы такие компьютеры представляли собой высокопроизводительные рабочие станции и миникомпьютеры , и это вызывало необходимость в небольших модификациях, которые могли бы работать на обычном оборудовании персональных компьютеров . Сегодняшние компьютеры имеют более чем достаточную мощность и мощность, чтобы устранить эти ограничения, но в последнее время были разработаны небольшие клоны, которые можно разместить на установочных дисках программного обеспечения или для использования на менее функциональном оборудовании. [43]

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

Редакторы с эмуляцией Emacs

Функции

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.

Вся конфигурация хранится в переменных, классах и структурах данных и изменяется путем простого обновления их в реальном времени. Использование диалекта Лиспа в этом случае является ключевым преимуществом, поскольку синтаксис Лиспа состоит из так называемых символических выражений (или sexprs), которые могут выступать как в качестве вычислимых кодовых выражений, так и в качестве формата сериализации данных, похожего на формат сериализации данных , но более простой и более простой. общие, чем хорошо известные, такие как 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 1Controlu 7 fMeta7 f(self-insert-command 7 ?f)1-7

Командный язык

Из-за относительно большого словаря команд Emacs имеет давно устоявшийся командный язык , позволяющий кратко выражать нажатия клавиш, необходимые для выполнения действия. Этот командный язык распознает следующие клавиши переключения и модификаторы: , , , , и . Не все из них могут присутствовать на клавиатуре в стиле IBM, хотя обычно их можно настроить по желанию. Они представлены на командном языке в виде соответствующих префиксов: , , , , и . Ключи, имена которых могут быть напечатаны только из более чем одного символа, заключаются в угловые скобки. Таким образом, сочетание клавиш, такое как + + + (проверка зависимых формул и вычисление всех ячеек во всех открытых книгах в Excel ), будет отображаться на командном языке Emacs как , а команда Emacs, такая как + + + (инкрементный поиск файлов по совпадению имен файлов). regexp ), будет выражаться как . Язык команд также используется для выражения действий, необходимых для вызова команд без назначенного ярлыка: например, команда (которая инициализирует буфер в памяти для временного хранения текста и манипуляций) при вызове пользователем будет возвращена как , при этом Emacs сканирует пространство имен контекстно доступных команд, чтобы вернуть кратчайшую последовательность нажатий клавиш, которая однозначно формулирует его.CtrlAlt⇧ ShiftMetaSuperHyperC-A-S-M-s-H-CtrlAlt⇧ ShiftF9C-A-S-<f9>Metas f CtrlMetasM-s f C-M-sscratch-bufferM-x scra <return>

Динамический дисплей

Поскольку Emacs появился раньше современной стандартной терминологии для графических пользовательских интерфейсов , он использует несколько разные имена для знакомых элементов интерфейса. Буферы, данные, с которыми взаимодействуют пользователи Emacs, отображаются пользователю внутри окон , которые представляют собой мозаичные части экрана терминала или окна графического интерфейса, которые Emacs называет фреймами ; в современной терминологии фрейм Emacs будет окном, а окно Emacs — разделенным. В зависимости от конфигурации окна могут включать собственные полосы прокрутки, номера строк, иногда «строку заголовка», обычно для облегчения навигации, и строку режима внизу (обычно отображающую имя буфера, активные режимы и положение точки буфера, среди прочего). ). Нижняя часть каждого кадра используется для выходных сообщений (тогда называемых «областью эха») и ввода текста для команд (тогда называемых «минибуфером»).

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

Точно так же, как буферы не требуют окон, запуск процессов Emacs не требует каких-либо фреймов, и одним из распространенных шаблонов использования является развертывание Emacs в качестве сервера редактирования : запуск его как безголового демона и подключение к нему через клиент, порождающий фреймы. Затем этот сервер можно сделать доступным в любой ситуации, когда требуется редактор, просто объявив клиентскую программу пользовательской EDITORили VISUALпеременной. Такой сервер продолжает работать в фоновом режиме, управляя любыми дочерними процессами, накапливая стандартный ввод из открытых каналов, портов или файлов Fifo, выполняя периодические или заранее запрограммированные действия, запоминая историю отмены буфера, сохраненные фрагменты текста, историю команд и другое состояние пользователя. между сеансами редактирования. В этом режиме работы Emacs перекрывает функциональность таких программ, как screen и tmux .

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

Настраиваемость и расширяемость

Самодокументирование

Первый Emacs содержал справочную библиотеку, включавшую документацию для каждой команды, переменной и внутренней функции. По этой причине сторонники Emacs описали это программное обеспечение как самодокументируемое , поскольку оно предоставляет пользователю информацию о своих обычных функциях и текущем состоянии. Каждая функция включает в себя строку документации, которая отображается пользователю по запросу — практика, которая впоследствии распространилась на языки программирования, включая Lisp , Java , Perl и Python . Эта справочная система может предоставить пользователям доступ к реальному коду каждой функции, как из встроенной библиотеки, так и из добавленной сторонней библиотеки.

В Emacs также имеется встроенное учебное пособие . Emacs отображает инструкции по выполнению простых команд редактирования и вызову учебного пособия, когда оно запускается без файла для редактирования. Учебник написан Стюартом Кракрафтом и Ричардом Столлманом.

Культура

Церковь Эмакса

Церковь Emacs , основанная Ричардом Столлманом , — это пародийная религия, созданная для пользователей Emacs. [50] Хотя он называет vi редактором зверя (vi-vi-vi — это 6-6-6 римскими цифрами), он не возражает против использования vi; скорее, он называет это анафемой несвободного программного обеспечения . («Использование бесплатной версии vi — это не грех, а покаяние » . [51] ) Церковь Emacs имеет собственную группу новостей , alt.religion.emacs , [52] в которой публикуются сообщения, якобы поддерживающие эту пародийную религию. Сторонники vi создали противоположный культ vi .

Столлман в шутку называл себя святым I  GNU  cius , святым церкви Emacs. [53] Речь идет об Игнатии Антиохийском , отце ранней церкви, почитаемом в христианстве.

Emacs мизинец

Существует фольклор, объясняющий повреждение повторяющегося напряжения, которое в просторечии называют мизинцем Emacs , сильной зависимостью Emacs от клавиш-модификаторов, [54] хотя не было проведено никаких исследований, которые бы показали, что Emacs вызывает больше таких проблем, чем другие компьютерные программы с тяжелой клавиатурой.

Пользователи решают эту проблему различными способами. Некоторые пользователи рекомендуют просто использовать две клавиши управления на типичных клавиатурах ПК, например клавиши Shift, во время набора текста вслепую, чтобы избежать чрезмерного напряжения левого мизинца. Правильное использование клавиатуры уменьшит RSI. [55] Программные методы включают: [56]

Аппаратные решения включают специальные клавиатуры, такие как Contoured Keyboard от Kinesis , в которой клавиши-модификаторы расположены там, где ими можно легко управлять большим пальцем , или клавиатура Microsoft Natural , чьи большие клавиши-модификаторы расположены симметрично с обеих сторон клавиатуры и их можно нажимать с помощью большого пальца. ладонь руки. [54] Также можно использовать ножные педали.

Мизинец Emacs — относительно недавняя разработка. Клавиатура Space-cadet , на которой был разработан Emacs, имела большие клавиши управления, расположенные рядом с клавишей пробела и до которых было легко дотянуться большим пальцем. [65]

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

Слово emacs иногда употребляется во множественном числе как emacsen по фонетической аналогии с boxen и VAXen , относясь к различным разновидностям Emacs. [66]

Смотрите также

Рекомендации

  1. ^ аб Гринберг, Бернард С. (1979). Multics Emacs: история, проектирование и реализация.
  2. ^ abc «Часто задаваемые вопросы по GNU Emacs».
  3. ^ abcd Эдриенн Г. Томпсон. «MACSimizing TECO». Архивировано из оригинала 24 октября 2013 г. Проверено 26 февраля 2012 г.
  4. ^ «Учебное пособие по GNU Emacs». Для того, чтобы редактор назывался «emacs», основным требованием является то, чтобы он был полностью расширяемым с помощью реального языка программирования, а не только языка макросов.
  5. ^ "Карманный справочник по GNU Emacs" . GNU Emacs — самый популярный и распространенный редактор семейства Emacs.
  6. ^ «Руководство по GNU Emacs». ФСФ . Проверено 24 ноября 2012 г.
  7. ^ Завински, Джейми (29 октября 2007 г.). «Хронология Emacs». www.jwz.org . Проверено 31 июля 2023 г.
  8. ^ «Выпущен Emacs 29.2» . lists.gnu.org . Проверено 18 января 2024 г.
  9. ^ "Руководство пользователя Трампа" . Фонд свободного программного обеспечения . Проверено 4 апреля 2009 г.
  10. ^ «Представляем Elfeed, программу чтения веб-каналов Emacs» .
  11. ^ «Развлечения». Наконец, если вы расстроены, попробуйте описать свои проблемы известному психотерапевту Элизе. Просто сделай МХ, доктор.
  12. ^ Завински, Джейми (21 июня 2005 г.) [1999]. «Хронология Emacs» . Проверено 11 августа 2015 г.
  13. ^ Ричарда Столлмана часто называют еще одним соавтором, но, как писал Дэниел Вайнреб : «Оригинальный (на основе TECO) Emacs был создан и спроектирован Гаем Л. Стилом-младшим и Дэвидом Муном. После того, как они заработали, и он стал стандартным текстовым редактором в лаборатории искусственного интеллекта, Столлман взял на себя его обслуживание». Сам Мун ответил: «Насколько я помню, все правда. Но, честно говоря, я должен сказать, что Столлман значительно улучшил Emacs после того, как «освободил» его от Гая и меня». См . Дэн Вайнреб (11 ноября 2007 г.), «Опровержение истории Столлмана о формировании символики и LMI», блог Дэна Вейнреба: программное обеспечение и инновации , заархивировано из оригинала 1 января 2009 г..
  14. ^ «История Emacs». Руководство по внутреннему устройству XEmacs . 11 декабря 2006 г. Проверено 22 августа 2007 г.
  15. ^ Алломберт, Билл. «Конкурс популярности Debian». Об этом сообщает редакция . Дебиан . Проверено 22 ноября 2011 г.
  16. ^ «10 старейших и значимых программ с открытым исходным кодом» . ЗДНет .
  17. ^ Раймонд, Эрик С.; Кэмерон, Дебра; Розенблатт, Билл (1996). Изучение GNU Emacs, 2-е издание. Севастополь, Калифорния: О'Рейли. стр. 408–409. ISBN 1-56592-152-6.
  18. ^ Уильямс, Сэм (2002). Свободно как свобода: крестовый поход Ричарда Столлмана за свободное программное обеспечение. Севастополь, Калифорния: O'Reilly Media. п. 82. ИСБН 0-596-00287-4.
  19. ^ Артур Сэмюэл (март 1980 г.). «Основное Е» (PDF) . Проверено 19 апреля 2020 г.
  20. ^ «EMACS против vi: бесконечная «священная война» компьютерщиков» . Архивировано из оригинала 26 ноября 2014 г. Проверено 30 мая 2014 г.«EMACS как таковая фактически начиналась как проект по стандартизации», — пишет Гай Стил по электронной почте.
  21. ^ Столлман, Ричард М. (1987). «Полноэкранный редактор EMACS». ГАРБ . № май 1987 г. Лисатор, Университет Линчепинга. стр. 8–11 . Проверено 14 сентября 2007 г.
  22. ^ Рейнольдс, Крейг (10 февраля 1992 г.). Уайзман, Дэвид Г. (ред.). «Имя Эмак Болио Коан». Дэвид Г. Уайзман: Истории компьютерного фольклора . Архивировано из оригинала 16 января 2003 года. Однажды дерзкий новичок сказал Столлману: «Я могу догадаться, почему редактор называется Emacs, но почему оправдатель называется Bolio?». Столлман решительно ответил: «Имена — это всего лишь имена, а «Эмак и Болио» — это название популярного магазина мороженого в городе Бостон». Ни один из этих людей не имел никакого отношения к программному обеспечению». На его вопрос был получен ответ, но, оставшись без ответа, новичок повернулся, чтобы уйти, но Столлман окликнул его: «Ни Emacs, ни Bolio тоже не имеют никакого отношения к магазину мороженого».
  23. ↑ аб Столлман, Ричард (26 марта 1981 г.). EMACS: расширяемый, настраиваемый, самодокументируемый редактор отображения (PDF) (технический отчет). Лаборатория искусственного интеллекта Массачусетского технологического института. AI-памятка 519a . Проверено 7 января 2011 г.
  24. ^ Ли Клотц (29 августа 2007 г.). «электронное письмо, цитируемое в статье «Будьте осторожны в своих шутках»». Нью-Йорк Таймс . Проверено 1 мая 2010 г.
  25. ^ «Комментарий автора ZWEI Дэна Вайнреба» . Я написал второй Emacs: реализацию машины на Лиспе, спецификация которой заключалась в том, чтобы «делать то, что делает Столлман PDP-10 (оригинальный) Emacs», а затем пошел дальше. Там просто МНОГО этого. Мне и Майку МакМахону потребовались бесконечные часы, чтобы реализовать столько команд для создания ZWEI/Zmacs.
  26. ^ Оуэн Теодор Андерсон (январь 1979 г.). «Проектирование и реализация системы написания редактора, ориентированного на отображение» (PDF) . Проверено 9 сентября 2012 г.
  27. ^ Кристофер Келти; Марио Бьяджоли; Питер Яси; Марта Вудманси (2015). Создание и уничтожение интеллектуальной собственности . Компьютерная корпорация Америки (CCA) EMACS, автор Стив Циммерман
  28. ^ "Эмакс". 17 декабря 2017 г.
  29. ^ «Различия между GNU Emacs и CCA Emacs».
  30. ^ «История Emacs».
  31. ^ "emacs-devel msg 00872 (29 сентября 2014 г.)" . Оглядываясь назад, 24.3 следовало назвать 25.1, а 24.4 следовало назвать 26.1. Эту штуку .N действительно следует сохранять только для выпусков с исправлением ошибок, и ни версии 24.3, 24.4, ни ранее запланированная версия 24.5 не являются выпусками с исправлениями ошибок.
  32. ^ Столл, Клиффорд (1988). «Преследование хитрого хакера». Коммуникации АКМ . 31 (5): 484–497. дои : 10.1145/42411.42412 . S2CID  6956966.
  33. ^ «GNU Emacs». Открыть хаб . Проверено 25 ноября 2017 г.
  34. ^ Раймонд, Эрик (12 ноября 2014 г.). «Новый репозиторий Git открыт» . Проверено 25 ноября 2017 г.
  35. ^ Столлман, Ричард (22 февраля 2008 г.). «Re: Ищу нового сопровождающего или команду Emacs». Список рассылки gnu.org . Проверено 25 ноября 2017 г.
  36. ^ Макнамара, Пол (25 февраля 2008 г.). «Столлман о передаче GNU Emacs, его будущем и важности номенклатуры». Сетевой мир . Проверено 25 ноября 2017 г.
  37. ^ Чиргвин, Ричард (05.11.2015). «После ухода Ричарда Столлмана у Emacs появляется новый сопровождающий». Регистр . Проверено 25 ноября 2017 г.
  38. ^ Раймонд, Эрик (29 марта 2014 г.). «Самое уродливое… хранилище… преобразование… когда-либо» . Проверено 25 ноября 2017 г. двадцать девять лет непрерывного развития не менее чем 579 человек
  39. ^ Стивен Дж., Тернбулл. «XEmacs против GNU Emacs» . Проверено 2 октября 2012 г.
  40. ^ «XEmacs мертв. Да здравствует XEmacs!».
  41. FrontPage — Meadow Wiki. Архивировано 16 февраля 2012 г. в Wayback Machine.
  42. ^ «Мой опыт работы с Lisp и разработка GNU Emacs». В те времена, в 1985 году, были люди, у которых были одномегабайтные машины без виртуальной памяти. Они хотели иметь возможность использовать GNU Emacs. Это означало, что мне пришлось сделать программу как можно меньшей.
  43. ^ «GNU Zile (Zile - это Emacs с потерями) - Краткое описание» . Современные компьютеры имеют более чем достаточно ресурсов для запуска и запуска полноценного Emacs за доли секунды, и Emacs, вероятно, — это то, что вам нужно. Zile — небольшой, быстрый и мощный клон Emacs. Это полезно для небольших установок (например, на дискете), машин с небольшим объемом памяти или сеансов быстрого редактирования, особенно на удаленных машинах или под другим пользователем, например root.
  44. ^ "Домашняя страница программного обеспечения Lugaru" .
  45. ^ «Текстовая система какао» .
  46. ^ «Настройка сочетаний клавиш для окна команд и редактора». Блоги Mathworks . 11 мая 2007 г. Проверено 18 августа 2019 г.
  47. ^ Больский, Моррис И.; Корн, Дэвид Г. (1989). «Благодарности». Язык команд и программирования KornShell. Энглвуд Клиффс, Нью-Джерси: Прентис Холл. стр. XII. ISBN 0-13-516972-0.
  48. ^ «Инициальный файл».
  49. ^ "Файл ранней инициализации" .
  50. ^ "Святой ИГНУций - Ричард Столлман" . Проверено 29 января 2015 г.
  51. ^ "Полная выборочная стенограмма выступления Ричарда М. Столлмана в АНУ" . Архивировано из оригинала 4 октября 2011 года . Проверено 29 января 2015 г.
  52. ^ Группа новостей alt.religion.emacs
  53. ^ "Святой ИГНУций - Ричард Столлман" . www.stallman.org . Проверено 27 марта 2018 г.
  54. ^ ab «Как избежать проблемы с мизинцем Emacs» . Xahlee.org . Проверено 8 ноября 2009 г.
  55. ^ «Emacs: почему не следует менять местами клавиши {Caps Lock, Control}» . При слепой печати модификаторы представлены парами, например ⇧ клавиша Shift. Принятый эргономичный способ нажатия комбинаций модификаторов заключается в использовании одной руки для нажатия клавиши-модификатора, а другой — для нажатия буквенной клавиши. Использование двух рук позволяет избежать напряжения мышц одной рукой.
  56. ^ «EmacsWiki: Повторное растяжение связок» . Проверено 29 января 2015 г.
  57. ^ «Перемещение клавиши Ctrl» . ЭмаксВики . Проверено 8 ноября 2009 г.
  58. ^ "Домашняя страница ErgoEmacs" . Проверено 1 сентября 2018 г.
  59. ^ «Раскладка Keymacs» . Гитхаб . 15 сентября 2022 г.
  60. ^ «EmacsWiki: Ace Jump» . Проверено 29 января 2015 г.
  61. ^ "Космосмакс". Гитхаб . Проверено 20 апреля 2015 г.
  62. ^ БэйлШанкс (07.10.2009). «Липкие модификаторы». ЭмаксВики . Проверено 8 ноября 2009 г.
  63. ^ «Режим Змеи». ЭмаксВики . Проверено 8 ноября 2009 г.
  64. ^ «Модификатор дома от Evdev» . Проверено 14 апреля 2015 г.
  65. ^ «Почему сочетания клавиш Emacs вызывают боль» .
  66. ^ "ВАКСен". Catb.org . Проверено 8 ноября 2009 г.

Библиография

Внешние ссылки