Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Emacs / я м æ к с / или EMACS ( редактор MACROS ) [3] [4] [5] представляет собой семейство текстовых редакторов , которые характеризуются своей расширяемости . [6] В руководстве для наиболее широко используемого варианта, [7] GNU Emacs , он описывается как «расширяемый, настраиваемый, самодокументирующийся редактор отображения в реальном времени». [8] Разработка первого Emacs началась в середине 1970-х, и работа над его прямым потомком, GNU Emacs, активно продолжается с 2021 года .

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

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

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

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

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

Emacs был запущен Гаем Л. Стилом-младшим как проект по унификации множества расходящихся наборов команд TECO и привязок клавиш в MIT [4]
На интерфейс Emacs повлиял дизайн клавиатуры космического курсанта Symbolics [15]
Редактирование исходного кода C в GNU Emacs
Редактирование, компиляция и выполнение кода C ++ из GNU Emacs

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

Ричард Столмен посетил Стэнфордскую лабораторию искусственного интеллекта в 1972 или 1974 годах и увидел редактора E лаборатории , написанного Фредом Райтом. [16] Он был впечатлен интуитивно понятным поведением редактора WYSIWYG («Что видишь, то и получаешь»), который с тех пор стал поведением по умолчанию для большинства современных текстовых редакторов. Он вернулся в Массачусетский технологический институт, где Карл Миккельсен, хакер из лаборатории искусственного интеллекта, добавил в TECO комбинированный режим отображения / редактирования под названием Control-R, который позволял обновлять экранное изображение каждый раз, когда пользователь нажимает клавишу. Столлман переопределил этот режим, чтобы он работал эффективно, а затем добавил макросфункция режима редактирования дисплея TECO, которая позволяла пользователю переопределять любое нажатие клавиши для запуска программы TECO. [5]

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

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

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

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

Исходный Emacs, как и TECO, работал только на PDP-10 с ITS. Его поведение существенно отличалось от поведения TECO, так что его можно было рассматривать как текстовый редактор сам по себе, и он быстро стал стандартной программой редактирования в ITS. Майк МакМахон перенес Emacs из ITS в операционные системы TENEX и TOPS-20 . Среди других авторов ранних версий Emacs - Кент Питман , Эрл Киллиан и Юджин Чиккарелли . К 1979 году Emacs был основным редактором лаборатории ИИ Массачусетского технологического института и его Лаборатории компьютерных наук. [21]

Реализации [ править ]

Ранние реализации [ править ]

Джеймс Гослинг написал первый подобный Emacs редактор для Unix ( Gosling Emacs ) в 1981 году.

В последующие годы программисты написали множество редакторов, подобных Emacs, для других компьютерных систем. К ним относятся EINE ( EINE не является EMACS ) и ZWEI [22] ( изначально ZWEI был EINE ), которые были написаны для машины Lisp Майком МакМахоном и Дэниелом Вайнребом , а также Sine ( Sine Is Not Eine ), [23] который был написан пользователя Оуэн Теодор Андерсон. Вайнреб в EINE был первым Emacs написаны на Лиспе. В 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, поскольку язык расширения.

Ранние Объявления о Computer Corporation Америки «s CCA EMACS (Steve Zimmerman). [24] появилось в 1984 году. [25] В сравнении с GNU Emacs в 1985 году, когда он вышел, упоминается бесплатный вариант против 2400 долларов. [26] [ нерелевантная цитата ]


GNU Emacs [ править ]

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

Ричард Столмен начал работу над GNU Emacs в 1984 году с целью создания бесплатного программного обеспечения, альтернативного проприетарному Gosling Emacs. GNU Emacs изначально был основан на Gosling Emacs, но замена Столлманом его интерпретатора Mocklisp на настоящий интерпретатор Лиспа потребовала переписать почти весь его код. Это была первая программа, выпущенная зарождающимся проектом 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 . [27] В сентябре 2014 года в списке рассылки GNU emacs-devel было объявлено, что GNU Emacs примет стратегию быстрого выпуска , и в будущем номера версий будут увеличиваться быстрее. [28]

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

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

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

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

XEmacs [ править ]

XEmacs 21.5 в GNU / Linux

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

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

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

  • Aquamacs - основан на GNU Emacs (Aquamacs 3.2 основан на GNU Emacs версии 24, а Aquamacs 3.3 основан на GNU Emacs версии 25), который ориентирован на интеграцию с пользовательским интерфейсом Apple Macintosh.
  • Meadow - японская версия для Microsoft Windows [38]
  • SXEmacs - форк XEmacs Стива Янгса [39]

Различные редакторы Emacs [ править ]

uEmacs / Pk 4.0.15 в Linux
В мг крошечные Emacs-подобный редактор в OpenBSD 5.3. Редактирование исходного кода Ruby
JOVE работает в ящике Debian
Zmacs , Emacs для машин Lisp

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

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

  • MicroEMACS , который изначально был написан Дэйвом Конроем, а затем развит Дэниелом Лоуренсом и существует во многих вариантах.
  • mg , первоначально называвшаяся MicroGNUEmacs, а затем mg2a, ответвление MicroEMACS, являющееся общественным достоянием, призванное больше напоминать GNU Emacs. Теперь устанавливается по умолчанию в OpenBSD .
  • JOVE (собственная версия Emacs Джонатана), непрограммируемая реализация Emacs Джонатана Пейна для UNIX-подобных систем.
  • MINCE (MINCE Is Not Complete Emacs), версия для CP / M и более поздних версий DOS от Mark of the Unicorn . MINCE превратился в Final Word, который в конечном итоге стал текстовым процессором Borland Sprint .
  • Perfect Writer , реализация CP / M, полученная из MINCE, которая была включена примерно в 1982 году в качестве текстового процессора по умолчанию в самые ранние выпуски Kaypro II и Kaypro IV. Позже он был предоставлен с Kaypro 10 в качестве альтернативы WordStar .
  • Freemacs , версия для DOS, в которой используется язык расширения на основе расширения текстовых макросов и который соответствует исходному пределу плоской памяти 64 КиБ .
  • ЗИЛ . Зиле был рекурсивный акроним Z Ile я сек L Ossy E Маков , [42] , но проект был переписан в Lua и теперь дает расширение , как Зиле Реализует Lua редакторов. Новый Zile по-прежнему включает реализацию Emacs в Lua под названием Zemacs. Также существует реализация vi под названием Zi.
  • Zmacs для MIT Lisp Machine и ее потомков, реализованных в ZetaLisp .
  • Climacs , Zmacs влиявший вариант реализован в Common Lisp .
  • Эпсилон , [43] клон Emacs по Lugaru Software. Версии для DOS, Windows, Linux, FreeBSD, Mac OS X и O / S 2 включены в выпуск. Он использует не-Lisp язык расширения с синтаксисом C и очень раннюю параллельную реализацию буфера командной оболочки в однозадачной MS-DOS.
  • PceEmacs - это редактор SWI-Prolog на основе Emacs .
  • Amacs , версия Emacs для Apple II ProDOS, реализованная на ассемблере 6502 Брайаном Фоксом . [44] [45]
  • Hemlock , первоначально написанный на Spice Lisp , затем на Common Lisp . Часть CMU Common Lisp . Под влиянием Zmacs . Позже был разветвлен проектами Lucid Common Lisp (как Helix), LispWorks и Clozure CL . Существует также проект Portable Hemlock, целью которого является создание Hemlock, работающего на нескольких реализациях Common Lisp.
  • umacs , [46] реализация под OS-9
  • edwin , текстовый редактор, подобный Emacs, включенный в MIT / GNU Scheme.

Редакторы с эмуляцией Emacs [ править ]

  • Собственный редактор Джо эмулирует сочетания клавиш Emacs при вызове как jmacs .
  • JED имеет режим эмуляции для Emacs.
  • Eclipse (IDE) предоставляет набор привязок клавиш Emacs.
  • IntelliJ IDEA предоставляет набор привязок клавиш Emacs.
  • Epsilon (текстовый редактор) По умолчанию использует эмуляцию Emacs и поддерживает режим vi.
  • Текст Система какао использует некоторые из тех же терминологии и понимает многие Emacs навигации привязок. Это возможно, потому что собственный пользовательский интерфейс использует клавишу Command (эквивалентную Super) вместо клавиши Control . [47]
  • GNU Readline - это строковый редактор, который понимает стандартные сочетания клавиш навигации Emacs. Он также имеет режим эмуляции vi .
  • GNOME Builder имеет режим эмуляции для Emacs.
  • MATLAB предоставляет привязки клавиш Emacs для своего редактора. [48]
  • Visual Studio Code предоставляет расширение для имитации привязки клавиш Emacs.

Особенности [ править ]

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

GNU Emacs - это редактор отображения в реальном времени , поскольку его правки отображаются на экране по мере их появления. Это стандартное поведение для современных текстовых редакторов, но EMACS был одним из первых, кто реализовал это. Альтернативой является выполнение отдельной команды для отображения текста (например, после его изменения). Это делается в линейных редакторах, таких как ed (unix), ED (CP / M) и Edlin (MS-DOS).

Общая архитектура [ править ]

Почти все функциональные возможности Emacs, включая базовые операции редактирования, такие как вставка символов в документ, достигаются с помощью функций, написанных на диалекте языка программирования Lisp . Диалект, используемый в GNU Emacs, известен как Emacs Lisp (ELisp). Слой Elisp сидит на стабильной основе базовых услуг и абстракции платформы , написанные на языке программирования Си . В этой среде Lisp переменные и функции могут быть изменены без необходимости перекомпилировать или перезапускать Emacs. Большая часть конфигурации хранится в переменных и изменяется простым изменением значений переменных.

Основная структура данных редактирования текста называется буфером, содержащим текст с дополнительными атрибутами; наиболее важными из них являются: точка (местоположение курсора) и метка (другое местоположение, ограничивающее выбранную область вместе с точкой ), имя файла, который он посещает (если применимо), и локальные значения переменных ELisp, специфичных для буфера. Такие локальные значения определяют, в частности, набор активных режимов (ровно один основной режим [ требуется пояснение ], обычно адаптирующий редактор к типу содержимого буфера (например, ELisp, C, HTML и т. Д.), И любое количествовторостепенные режимы [ требуется пояснение ], управляющие поведением других редакторов независимо от типа содержимого). Любое взаимодействие с редактором (например, нажатие клавиш или нажатие кнопки мыши) реализуется путем выполнения кода Elisp, обычно команды , которая является функцией, явно предназначенной для интерактивного использования. Ключи могут быть произвольно переопределены, и команды также могут быть доступны по имени; некоторые команды оценивают произвольный код Elisp из буферов (например, eval-regionили eval-buffer).

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

В одном буфере можно открывать несколько окон, например, для просмотра разных частей длинного текста, а несколько буферов могут совместно использовать один и тот же текст, например, чтобы воспользоваться преимуществами различных основных режимов в файле со смешанным языком. При необходимости основной режим также можно изменить вручную с помощью M-x <mode name>.

Возможность настройки [ править ]

  • Нажатия клавиш могут быть записаны в макросы и воспроизведены для автоматизации сложных повторяющихся задач. Это часто делается на специальной основе, при этом каждый макрос удаляется после использования, хотя макросы можно сохранить и вызвать позже.
  • При запуске Emacs выполняет сценарий Emacs Lisp с именем ~ / .emacs (последние версии также ищут ~ / emacs.el , ~ / .emacs.d / init.el и ~ / .config / emacs / init.el ; [ 49] Emacs выполнит первое найденное, игнорируя остальные). Этот персональный файл настроек может быть сколь угодно длинным и сложным, но типичное содержимое включает:
    • Установка глобальных переменных или вызов функций для настройки поведения Emacs, например (set-default-coding-systems 'utf-8)
    • Привязки клавиш для переопределения стандартных и добавления ярлыков для команд, которые пользователь считает удобными, но не имеют привязки клавиш по умолчанию. Пример:(global-set-key (kbd "C-x C-b") 'ibuffer)
    • Загрузка, включение и инициализация расширений (Emacs поставляется со многими расширениями, но по умолчанию загружаются только некоторые).
    • Настройка перехватчиков событий для запуска произвольного кода в определенное время, например, для автоматической перекомпиляции исходного кода после сохранения buffer ( after-save-hook)
    • Выполнение произвольных файлов, обычно для разделения слишком длинного файла конфигурации на управляемые и однородные части ( ~ / .emacs.d / и ~ / elisp / - традиционные места для этих личных скриптов)
  • Расширение customize позволяет пользователю устанавливать свойства конфигурации, такие как цветовая схема, интерактивно, из Emacs, более удобным для пользователя способом, чем путем установки переменных в .emacs : оно предлагает поиск, описания и текст справки, ввод с множественным выбором, возврат по умолчанию, изменение работающего экземпляра Emacs без перезагрузки и другие удобства, аналогичные функциональным возможностям настроек других программ. Настроенные значения автоматически сохраняются в .emacs (или другом назначенном файле).
  • Темы , влияющие на выбор шрифтов и цветов, определяются как файлы elisp и выбираются с помощью расширения customize.

Самодокументирование [ править ]

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

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

Культура [ править ]

Церковь Emacs [ править ]

Ричард Столмен в роли Святого I GNUcius , святого в церкви Emacs

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

Столмен в шутку называл себя St I  GNU  cius , святым в церкви Emacs. [53]

Emacs pinky [ править ]

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

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

  • Настройка раскладки клавиш таким образом, чтобы клавиша Control заменялась клавишей Caps Lock. [57] Подобные методы включают определение клавиши Caps Lock в качестве дополнительной клавиши Control или транспонирование клавиш Control и Meta. Однако, поскольку эти клавиши все еще нажимаются одним и тем же пальцем, они все еще могут влиять на мизинец Emacs. [ требуется разъяснение ]
  • Программное обеспечение, такое как xwrits или встроенный в Emacs режим type-break-mode , напоминающее пользователю о регулярных запланированных перерывах.
  • Использование сочетаний клавиш ErgoEmacs (с второстепенным режимом ergoemacs-mode). [58]
  • Настройка всей раскладки клавиатуры для перемещения часто встречающихся по статистике клавиш Emacs в более подходящие места. [59]
  • Такие пакеты, как ace-jump-mode[60] или расширения elisp, которые предоставляют аналогичные функциональные возможности многоуровневой навигации, сначала запрашивая символ, а затем заменяя вхождения символа клавишами доступа для перемещения курсора.
  • evil-mode, продвинутый слой эмуляции Vim .
  • god-mode, который обеспечивает подход, аналогичный подходу vim, с режимом ввода команд Emacs без клавиш-модификаторов.
  • Используя индивидуальную раскладку клавиш, предлагаемую Spacemacs , проект, в котором Spaceключ используется в качестве основного ключа для запуска управляющих последовательностей. Проект также в значительной степени включает в себя evil-modeи god-mode. [61]
  • StickyKeys , который превращает последовательности клавиш в комбинации клавиш. [62]
  • Встроенный модуль Emacs, viper-modeкоторый позволяет использовать раскладку клавиш vi для базового редактирования текста и схему Emacs для более продвинутых функций. [63]
  • Придание двойной роли более удобной клавише, такой как пробел, чтобы она функционировала как клавиша Control при нажатии в сочетании с другими клавишами. Эргономичные клавиатуры или клавиатуры с большим количеством клавиш рядом с пробелом, например японские клавиатуры , позволяют большим пальцем управлять другими клавишами-модификаторами, такими как Meta или Shift. [64]
  • Использование ограниченного эргономичного набора сочетаний клавиш и доступ к другим функциям путем набора текста M-x <command-name>. Сам Mx тоже может отскочить.
  • Управление Emacs через голосовой ввод.

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

Мизинец Emacs является сравнительно недавно. Пространственно-юнкер клавиатура , на которой был разработан Emacs была негабаритные ключи управления , которые были рядом с пробелом и были легко доступен с большим пальцем. [65]

Терминология [ править ]

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

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

  • Сравнение текстовых редакторов
  • Конкерор
  • GNU TeXmacs
  • Список текстовых редакторов
  • Список команд Unix
  • Интегрированная среда развития

Ссылки [ править ]

  1. ^ «Даты выпуска Emacs» .
  2. ^ a b Завински, Джейми (21.06.2005) [1999]. "Временная шкала Emacs" . Дата обращения 11 августа 2015 .
  3. ^ a b Гринберг, Бернард С. (1979). Multics Emacs: история, дизайн и реализация .
  4. ^ a b c "Часто задаваемые вопросы о GNU Emacs" .
  5. ^ а б в г Эдриен Г. Томпсон. «MACSimizing TECO» .
  6. ^ "Учебное введение в GNU Emacs" . Для того чтобы редактор назывался «emacs», главное требование состоит в том, чтобы он был полностью расширяемым с помощью реального языка программирования, а не только макроязыка.
  7. ^ "Карманный справочник GNU Emacs" . GNU Emacs - самый популярный и распространенный редактор семейства Emacs.
  8. ^ "Руководство по GNU Emacs" . ФСПО . Проверено 24 ноября 2012 года .
  9. ^ "Представляем Elfeed, программу чтения веб-каналов Emacs" .
  10. ^ «Развлечения» . Наконец, если вы почувствуете разочарование, попробуйте описать свои проблемы известному психотерапевту Элизе. Просто сделайте Mx doctor.
  11. ^ Ричард Столмен часто упоминается как еще один соавтор, но, какписал Дэниел Вайнреб , «оригинальный Emacs (на основе TECO) был создан и разработан Гаем Л. Стилом-младшим и Дэвидом Муном. стал стандартным текстовым редактором в лаборатории искусственного интеллекта, Столмен взял на себя его обслуживание ». Сам Мун ответил: «Все верно, насколько я помню. Но, честно говоря, я должен сказать, что Столлман значительно улучшил Emacs после того, как он« освободил »его от Гая и меня». См. Вайнреб, Дэн (11 ноября 2007 г.), «Опровержение истории Столлмана о формировании символики и LMI» , блог Дэна Вайнреба: программное обеспечение и инновации , заархивировано из оригинала. 1 января 2009 г..
  12. ^ "История Emacs" . Руководство по внутреннему устройству XEmacs . 2006-12-11 . Проверено 22 августа 2007 .
  13. ^ Алломберт, Билл. «Конкурс популярности Debian» . Отчет редакции . Debian . Проверено 22 ноября 2011 года .
  14. ^ «10 самых старых и значительных программ с открытым исходным кодом» .
  15. ^ Раймонд, Эрик S .; Кэмерон, Дебра; Розенблатт, Билл (1996). Изучение GNU Emacs, 2-е издание . Севастополь, Калифорния: О'Рейли. С. 408–409. ISBN 1-56592-152-6.
  16. Артур Сэмюэл (март 1980). "Essential E" (PDF) . Проверено 19 апреля 2020 .
  17. ^ «EMACS против vi: бесконечная« священная война » компьютерных фанатов » . Архивировано из оригинала на 2014-11-26 . Проверено 30 мая 2014 . «EMACS как таковой на самом деле начинался как проект стандартизации», - пишет Гай Стил по электронной почте.
  18. ^ Столмен, Ричард М. (1987). «Полноэкранный редактор EMACS» . GARB ( май 1987 г.). Лизатор, Университет Линчёпинга. С. 8–11 . Проверено 14 сентября 2007 .
  19. ^ Рейнольдс, Крейг (1992-02-10). Уайзман, Дэвид Г. (ред.). "Emac Bolio Name Koan" . Дэвид Г. Уайзман: Истории компьютерного фольклора . Один дерзкий новичок однажды сказал Столмену: «Я могу догадаться, почему редактор называется Emacs, но почему оправдатель называется Bolio?». Столмен решительно ответил: «Имена - это всего лишь имена, Emack & Bolio's - это название популярного магазина мороженого в Бостоне». Ни один из этих людей не имел никакого отношения к программе ». На его вопрос был дан ответ, но без ответа, новичок повернулся, чтобы уйти, но Столлман окликнул его: «Ни Emacs, ни Bolio не имеют никакого отношения к магазину мороженого».[ постоянная мертвая ссылка ]
  20. ^ a b Столмен, Ричард (26 марта 1981 г.). EMACS: расширяемый, настраиваемый, самодокументирующийся редактор отображения (PDF) (технический отчет). MIT AI Lab. Памятка AI 519a . Проверено 7 января 2011 .
  21. ^ Ли Клотц (2007-08-29). "электронное письмо, цитируемое в статье" Будьте осторожны с тем, о чем вы шутите " " . Нью-Йорк Таймс . Проверено 1 мая 2010 .
  22. ^ "Комментарий автора ZWEI Дэна Вайнреба" . Я написал второй за всю историю Emacs: реализацию машины на Лиспе, спецификация которой заключалась в том, чтобы «делать то, что делает Emacs Столлмана PDP-10 (исходный)», а затем продолжил работу оттуда. Его просто очень много. Мне и Майку МакМахону потребовались бесконечные часы, чтобы реализовать так много команд для создания ZWEI / Zmacs.
  23. Оуэн Теодор Андерсон (январь 1979 г.). «Разработка и реализация системы записи редактора, ориентированного на отображение» (PDF) . Проверено 9 сентября 2012 .
  24. ^ Кристофер Келти; Марио Бьяджоли; Питер Язи; Марта Вудманси (2015). Создание и изъятие интеллектуальной собственности . Компьютерная корпорация Америки (CCA) EMACS, автор: Стив Циммерман
  25. ^ "Emacs" . 17 декабря 2017 года.
  26. ^ «Различия между GNU Emacs и CCA Emacs. Авторские права» .
  27. ^ "История Emacs" .
  28. ^ "emacs-devel msg 00872 (2014-09-29)" . В ретроспективе 24.3 следовало назвать 25.1, а 24.4 - 26.1. .N штуковина действительно должен быть сохранен только ошибка-исправленной и ни один из 24.3, 24.4, ни ранее запланированных 24.5 не ошибка-исправленные.
  29. ^ Столл, Клиффорд (1988). «Преследование коварного хакера». Коммуникации ACM . 31 (5): 484–497. DOI : 10.1145 / 42411.42412 . S2CID 6956966 . 
  30. ^ "GNU Emacs" . Откройте Hub . Проверено 25 ноября 2017 .
  31. ^ Рэймонд, Эрик (2014-11-12). «Новый репозиторий Git запущен» . Проверено 25 ноября 2017 .
  32. Столмен, Ричард (22 февраля 2008 г.). «Re: Ищу нового сопровождающего Emacs или команду» . Список рассылки gnu.org . Проверено 25 ноября 2017 .
  33. ^ Макнамара, Пол (25 февраля 2008 г.). «Столмен о передаче GNU Emacs, его будущем и важности номенклатуры» . Сетевой мир . Проверено 25 ноября 2017 .
  34. ^ Чиргвин, Ричард (2015-11-05). "Emacs получает нового сопровождающего после того, как Ричард Столлман заключает контракт" . Реестр . Проверено 25 ноября 2017 .
  35. ^ Рэймонд, Эрик (2014-03-29). «Самое уродливое… хранилище… преобразование… когда-либо» . Проверено 25 ноября 2017 . двадцать девять лет непрерывного развития не менее 579 человек
  36. ^ Стивен Дж., Тернбулл. «XEmacs против GNU Emacs» . Проверено 2 октября 2012 .
  37. ^ "XEmacs мертв. Да здравствует XEmacs!" .
  38. ^ FrontPage - Meadow Wiki архивации 2012-02-16 в Wayback Machine
  39. ^ "Сайт SXEmacs" . Sxemacs.org. 2009-10-11 . Проверено 8 ноября 2009 .
  40. ^ «Мои впечатления от Lisp и разработка GNU Emacs» . В те дни, в 1985 году, были люди, у которых были одномегабайтные машины без виртуальной памяти. Они хотели иметь возможность использовать GNU Emacs. Это означало, что я должен был сделать программу как можно меньше.
  41. ^ "GNU Zile (Zile - Lossy Emacs) - Резюме" . У современных компьютеров более чем достаточно ресурсов для запуска и запуска полного Emacs за доли секунды, и Emacs, вероятно, то, что вам нужно. Zile - это небольшой, быстрый и мощный клон Emacs. Это полезно для небольших установок (например, на гибких дисках), машин с небольшим объемом памяти или быстрых сеансов редактирования, особенно на удаленных машинах или в качестве другого пользователя, например root.
  42. ^ "Домашняя страница Zile" .
  43. ^ "Домашняя страница программного обеспечения Lugaru" .
  44. ^ "Источник AMACS" .
  45. ^ "apple2.org" .
  46. ^ Пол С. Даян (1992). Гуру OS-9 - 1: Факты . Галактик Индастриал Лимитед. ISBN 0-9519228-0-7.
  47. ^ "Текстовая система какао" .
  48. ^ «Настройка сочетаний клавиш для Командного окна и редактора» . Блоги Mathworks . 2007-05-11 . Проверено 18 августа 2019 .
  49. ^ "Файл инициализации" .
  50. ^ "Святой IGNUcius - Ричард Столмен" . Проверено 29 января 2015 года .
  51. ^ "Несокращенная выборочная стенограмма выступления Ричарда Столлмана в ANU" . Проверено 29 января 2015 года .
  52. ^ alt.religion.emacs группа новостей
  53. ^ "Святой IGNUcius - Ричард Столмен" . www.stallman.org . Проверено 27 марта 2018 .
  54. ^ a b «Как избежать проблемы с Emacs Pinky» . Xahlee.org . Проверено 8 ноября 2009 .
  55. ^ "Emacs: Почему не следует менять местами клавиши {Caps Lock, Control}" . При слепом наборе модификаторы используются парами, например ⇧ клавиша Shift. Принятый эргономичный способ нажатия комбинаций модификаторов - это нажатие одной рукой клавиши-модификатора, а другой - буквенной клавиши. Использование двух рук позволяет избежать напряжения мышц одной рукой.
  56. ^ "EmacsWiki: Повторяющееся деформационное повреждение" . Проверено 29 января 2015 года .
  57. ^ "Перемещение клавиши Ctrl" . EmacsWiki . Проверено 8 ноября 2009 .
  58. ^ "Домашняя страница ErgoEmacs" . Проверено 1 сентября 2018 .
  59. ^ "Раскладка клавиатуры" .
  60. ^ "EmacsWiki: Ace Jump" . Проверено 29 января 2015 года .
  61. ^ "Spacemacs" . Проверено 20 апреля 2015 .
  62. ^ BayleShanks (2009-10-07). «Липкие модификаторы» . EmacsWiki . Проверено 8 ноября 2009 .
  63. ^ "Режим Змеи" . EmacsWiki . Проверено 8 ноября 2009 .
  64. ^ "Домашний модификатор Evdev" . Проверено 14 апреля 2015 .
  65. ^ «Почему горячие клавиши Emacs болезненны» .
  66. ^ "VAXen" . Catb.org . Проверено 8 ноября 2009 .

Библиография [ править ]

  • Чиккарелли, Юджин (1978). Введение в редактор Emacs . Кембридж, Массачусетс: Лаборатория искусственного интеллекта Массачусетского технологического института. AIM-447. PDF
  • Столмен, Ричард М. (1981) [1979]. EMACS: расширяемый, настраиваемый, самодокументирующийся редактор дисплея . Кембридж, Массачусетс: Лаборатория искусственного интеллекта Массачусетского технологического института. AIM-519A. PDF HTML
  • Столмен, Ричард М. (2002). Руководство по GNU Emacs (15-е изд.). GNU Press. ISBN 1-882114-85-X.
  • Столмен, Ричард М. (2002). «Мои впечатления от Lisp и разработка GNU Emacs» . Проверено 1 февраля 2007 .
  • Шассел, Роберт Дж. (2004). Введение в программирование в Emacs Lisp . GNU Press. ISBN 1-882114-56-6.
  • Гликштейн, Боб (апрель 1997 г.). Написание расширений GNU Emacs . O'Reilly & Associates. ISBN 1-56592-261-1.
  • Кэмерон, Дебра; Эллиотт, Джеймс; Лой, Марк; Раймонд, Эрик; Розенблатт, Билл (декабрь 2004 г.). Изучение GNU Emacs, 3-е издание . O'Reilly & Associates. ISBN 0-596-00648-9.
  • Финсет, Крейг А. (1991). Ремесло редактирования текста или Emacs для современного мира . ISBN компании Springer-Verlag & Co. 978-1-4116-8297-9.
  • Томпсон, Эдриенн Г. (2009). «MACSimizing TECO» . Проверено 26 февраля 2012 .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Пересмотренная запись в Справочнике свободного программного обеспечения .
  • Wikemacs
  • EmacsWiki
  • EmacsFamily
  • Список реализаций Emacs
  • Архитектурный обзор
  • Одно из старейших соперников в области вычислений: Emacs против Vi