Редактирование нескольких Dired буферов в GNU Emacs | |
Первоначальный автор (-ы) | Дэвид А. Мун,. Гай Л. Стил-младший |
---|---|
Разработчик (-ы) | Различное бесплатное / свободное ПО разработчики, включая добровольцев и коммерческие разработчики |
Первоначальный выпуск | 1976 г.; 44 года назад (1976) |
Стабильный выпуск | 27.1 (10 августа 2020 г.; 2 месяца назад (2020-08-10)) |
Написано на | Lisp, C |
Операционная система | Cross -platform |
Тип |
Emacs или EMACS (Editor MACroS ) - это семейство, которое характеризуется своими расширяемость. В руководстве для наиболее широко используемого варианта, GNU Emacs, он описывается как «расширяемый, настраиваемый, самодокументирующийся редактор отображения в реальном времени». Разработка первого Emacs началась в середине 1970-х годов, и работа над его прямым потомком, GNU Emacs, активно продолжается по состоянию на 2020 год.
Emacs имеет более 10 000 встроенных команд и его пользовательский интерфейс позволяет пользователю объединять эти команды в макросы для автоматизации работы. Реализации Emacs обычно содержат диалект языка программирования Lisp, который обеспечивает возможность глубокого расширения, позволяя пользователям и разработчикам писать новые команды и приложения для редактора. Были написаны расширения для управления электронной почтой, файлами, схемами и RSS фидами, а также клонами ELIZA, Pong, Conway's Life, Snake и Tetris.
Оригинальный EMACS был написан в 1976 году Дэвидом А. Муном. и Гай Л. Стил младший как набор Editor MACroS для редактора. Он был вдохновлен идеями редакторов макросов TECO TECMAC и TMACS.
Самая популярная и наиболее портируемая версия Emacs - это GNU Emacs, созданная Ричардом Столлманом для Проект GNU. XEmacs - это вариант, который разветвился от GNU Emacs в 1991 году. GNU Emacs и XEmacs используют похожие диалекты Лиспа и по большей части являются совместимы друг с другом. Разработка XEmacs неактивна.
Emacs, наряду с vi, является одним из двух основных соперников в традиционных редакционных войнах культуры Unix. Emacs - один из старейших проектов с открытым исходным кодом, все еще находящихся в разработке.
Разработка Emacs началась в 1970-х годах в лаборатории искусственного интеллекта MIT, где На компьютерах ose PDP-6 и PDP-10 использовалась Несовместимая система разделения времени (ITS) операционная система, которая по умолчанию имела значение по умолчанию, известное как Ленточный редактор и корректор (TECO). В отличие от большинства современных текстовых редакторов, TECO использовал отдельные режимы, в которых пользователь либо добавлял текст, либо редактировал существующий текст, либо отображал документ. Нельзя помещать символы непосредственно в документ, вводя их в TECO, вместо этого нужно ввести символ ('i') на командном языке TECO, сообщающий ему переключиться в режим ввода, ввести требуемые символы, в течение которых отредактированный текст не отображался на экране, и, наконец, введите символ (
Ричард Столлман посетил Стэнфордскую лабораторию искусственного интеллекта в 1972 или 1974 годах и увидел редактора E лаборатории, написанного Фредом Райтом. Он был впечатлен интуитивным поведением редактора WYSIWYG («Что видишь, то и получаешь»), которое с тех пор стало поведением по умолчанию для большинства современных текстовых редакторов. Он вернулся в Массачусетский технологический институт, где Карл Миккельсен, хакер из лаборатории искусственного интеллекта, добавил в TECO комбинированный режим отображения / редактирования под названием Control-R, который позволял обновлять экранное изображение каждый раз, когда пользователь нажимал клавишу.. Столлман переопределил этот режим, чтобы он работал эффективно, а затем добавил функцию макроса в режим редактирования дисплея TECO, который позволял пользователю переопределять любое нажатие клавиши для запуска программы TECO.
E имел еще одну особенность. то, чего не хватало TECO: редактирование с произвольным доступом. TECO был последовательным редактором страниц, который был разработан для редактирования бумажной ленты на PDP-1 и обычно позволял редактировать только одну страницу за раз в порядке страниц в файл. Вместо того, чтобы принять подход E по структурированию файла для произвольного доступа к страницам на диске, Столлман модифицировал TECO, чтобы более эффективно обрабатывать большие буферы, и изменил свой метод управления файлами на чтение, редактирование и запись всего файла как одного буфера. Практически все современные редакторы используют этот подход.
Новая версия TECO быстро стала популярной в AI Lab и вскоре накопила большую коллекцию пользовательских макросов, имена которых часто заканчивались MAC или MACS, что означает макрос. Два года спустя Гай Стил взялся за проект объединения различных макросов в единый набор. Завершенная реализация Стила и Столлмана включала средства для расширения и документирования нового набора макросов. Получившаяся система получила название EMACS, что расшифровывалось как «Редактирование MACroS» или, как вариант, E с MACroS. Столлман выбрал имя Emacs, «потому что
Столлман видел проблему в слишком частой настройке и фактическом разветвлении и установил определенные условия для использования. Позже он написал:
EMACS был распространен на основе совместного использования, что означает, что все улучшения должны быть возвращены мне для включения и распространения.
Исходный Emacs, как и TECO, работал только на PDP-10 работает ЕГО. Его поведение существенно отличалось от поведения TECO, поэтому его можно было рассматривать как текстовый редактор сам по себе, и он быстро стал стандартной программой редактирования в ITS. Майк МакМахон перенес Emacs из ITS в операционные системы TENEX и TOPS-20. Другие участники ранних версий Emacs включают Kent Pitman и. К 1979 году Emacs был основным редактором лаборатории ИИ Массачусетского технологического института и его Лаборатории компьютерных наук.
В последующие годы программисты написали множество Emacs-подобных редакторов для других компьютерных систем. К ним относятся EINE (EINE не является EMACS) и ZWEI (ZWEI изначально был EINE), которые были написаны для Lisp-машины Майком МакМэхоном и Даниэль Вайнреб и Sine (Sine Is Not Eine), написанные Оуэном Теодором Андерсоном. 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 Computer Corporation of America (Стив Циммерман). появился в 1984 году. В сравнении с GNU Emacs в 1985 году, когда он вышел, упоминался бесплатный вариант против 2400 долларов.
Ричард Столлман начал работу над 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. В сентябре 2014 года в списке рассылки GNU emacs-devel было объявлено, что GNU Emacs примет в будущем стратегия и номера версий будут увеличиваться быстрее.
GNU Emacs был позже перенесен на Unix. Он предлагал больше возможностей, чем Gosling Emacs, в частности, полнофункциональный Lisp в качестве языка расширения, и вскоре заменил Gosling Emacs в качестве де-факто редактора Emacs для Unix. Маркус Хесс использовал брешь в безопасности в подсистеме электронной почты GNU Emacs во время взлома 1986 года, когда он получил суперпользователь доступ к компьютерам Unix.
Большая часть функциональности GNU Emacs реализуется посредством языка сценариев, называемого Emacs Lisp. Поскольку около 70% GNU Emacs написано на языке расширений Elisp, достаточно перенести только ядро C, которое реализует интерпретатор Elisp. Это делает перенос Emacs на новую платформу значительно менее трудным, чем перенос эквивалентного проекта, состоящего только из собственного кода.
Разработка GNU Emacs была относительно закрытой до 1999 г. и использовалась в качестве примера стиля разработки «Собор» в «Собор и базар». С тех пор в проекте был принят список рассылки общедоступных разработчиков и анонимный доступ к CVS. До 2008 года разработка велась в одном канале CVS, а затем была переведена на Bazaar DVCS. 11 ноября 2014 года разработка была перенесена на Git.
Ричард Столлман оставался основным сопровождающим GNU Emacs, но время от времени он отступал от этой роли. Стефан Монье и Чонг Идонг были сопровождающими с 2008 по 2015 год. Джон Вигли был назначен сопровождающим в 2015 году после встречи со Столлманом в MIT. По состоянию на начало 2014 года у GNU Emacs за всю свою историю было 579 отдельных коммиттеров.
Lucid Emacs, основанный на ранней альфа-версии GNU Emacs 19, был разработан в 1991 году Джейми Завински и другими в Lucid Inc. Один из самых известных ранних Разветвления в разработке бесплатного программного обеспечения произошли, когда кодовые базы двух версий Emacs разошлись, и отдельные группы разработчиков прекратили попытки объединить их обратно в единую программу. Lucid Emacs был с тех пор переименован в XEmacs. Его разработка в настоящее время неактивна, последняя стабильная версия 21.4.22 была выпущена в январе 2009 года (в то время как бета-версия была выпущена в 2013 году), в то время как GNU Emacs реализовал многие функции, ранее предназначенные только для XEmacs. GNU Emacs
Другие известные форки включают:
В прошлом росло количество проектов, направленных на создание небольших версий Emacs. GNU Emacs изначально был нацелен на компьютеры с 32-битным плоским адресным пространством и как минимум 1 MiB RAM. Такими компьютерами были высокопроизводительные рабочие станции и миникомпьютеры в 1980-х годах, и это оставило потребность в небольших повторных реализациях, которые могли бы работать на обычном персональном компьютере аппаратном обеспечении. Сегодняшние компьютеры обладают более чем достаточной мощностью и мощностью, чтобы устранить эти ограничения, но совсем недавно были разработаны небольшие клоны для установки на установочные диски программного обеспечения или для использования на менее производительном оборудовании.
Другие проекты нацелены на реализацию Emacs в другой диалект Лиспа или совсем другой язык программирования. Хотя не все все еще активно поддерживаются, эти клоны включают:
Emacs в первую очередь предназначен для работы с частями текста, хотя он может форматировать и печатать документы как текстовый процессор путем взаимодействия с внешними программами, такими как LaTeX, Ghostscript или веб-браузером. Emacs предоставляет команды для управления и дифференциального отображения семантических единиц текста, таких как слова, предложения, абзацы и исходный код конструкции, такие как функции. Он также имеет макросы клавиатуры для выполнения определенных пользователем пакетов команд редактирования.
GNU Emacs - это редактор отображения в реальном времени, поскольку его правки отображаются на экране по мере их появления. Это стандартное поведение для современных текстовых редакторов, но EMACS был одним из первых, кто реализовал это. Альтернативой является выдача отдельной команды для отображения текста, например, после его изменения. Это делается в линейных редакторах, таких как (unix), ED (CP / M) и Edlin (MS-DOS).
Почти все функциональные возможности Emacs, включая базовые операции редактирования, такие как вставка символов в документ, достигаются с помощью функций, написанных на диалекте. языка программирования Лисп. Диалект, используемый в GNU Emacs, известен как Emacs Lisp (ELisp). Уровень ELisp расположен поверх стабильного ядра базовых сервисов и абстракции платформы, написанной на языке программирования C. В этой среде Lisp переменные и функции могут быть изменены без необходимости перекомпилировать или перезапускать Emacs.
Emacs оперирует структурами данных, называемыми буферами, содержащими текст с дополнительными атрибутами; каждый буфер сохраняет свою собственную точку (положение курсора) и метку (другое место, ограничивающее выбранную область вместе с точкой), имя файла, который он посещает (если применимо), и набор активных режимов (ровно один основной режим и любое количество второстепенных режимов), которые управляют поведением редактора через переменные. Код Elisp может выполняться интерактивно с помощью именованных команд, которые могут быть связаны с нажатиями клавиш или доступны по имени; некоторые команды оценивают произвольный код Elisp из буферов (например, eval-region
или eval-buffer
).
Буферы отображаются в окнах, которые представляют собой мозаичные части экрана терминала или окна GUI (называемого фреймом в терминах Emacs; возможно несколько фреймов). Если не указано иное, окна включают полосы прокрутки, номера строк, строку заголовка вверху (обычно отображающую заголовок или имя файла буфера) и строку режима внизу (обычно перечисляя активные режимы и положение точки буфера).
В одном буфере можно открывать несколько окон, например, для просмотра разных частей длинного текста, и несколько буферов могут совместно использовать один и тот же текст, например, чтобы использовать преимущества различных основных режимов в смешанном языке файл. При необходимости режим также можно изменить вручную с помощью M-x
.
(utf-8 set-default-coding-systems)
(global-set-key (kbd "Cx Cb") 'ibuffer)
after-save-hook
)Первый Emacs содержал справочную библиотеку, которая включала документацию по каждой команде, переменной и внутренней функции. Из-за этого сторонники Emacs описали программное обеспечение как самодокументирующее, поскольку оно предоставляет пользователю информацию о своих обычных функциях и текущем состоянии. Каждая функция включает строку документации, которая отображается пользователю по запросу, практика, которая впоследствии распространилась на языки программирования, включая Lisp, Java, Perl и Python. Эта справочная система может привести пользователей к фактическому коду для каждой функции, будь то из встроенной библиотеки или добавленной сторонней библиотеки.
Emacs также имеет встроенный учебник. Emacs отображает инструкции для выполнения простых команд редактирования и вызова учебника, когда оно запущено без файла для редактирования. Учебное пособие составлено Стюартом Крафт и Ричардом Столменом.
Церковь Emacs, сформированная Ричардом Столлманом, это пародийная религия, созданная для пользователей Emacs. Хотя в нем упоминается vi как редактор зверя (vi-vi-vi обозначает 6-6-6 римскими цифрами), он не возражает против использования vi; скорее, он называет это несвободным программным обеспечением анафемой. («Использование бесплатной версии vi - это не грех, а покаяние.») Церковь Emacs имеет свою собственную группу новостей, alt. Religion.emacs, сообщения которого якобы поддерживают эту пародийную религию. Сторонники vi создали противоположный Культ vi.
Столлман в шутку называл себя св. I GNU cius, святым в церкви Emacs.
Есть фольклорные приписывания повторяющаяся деформация, в просторечии называемая Emacs мизинец из-за сильной зависимости Emacs от клавиш-модификаторов, хотя не было проведено никаких исследований, показывающих, что Emacs вызывает больше таких проблем, чем другие компьютеры с тяжелой клавиатурой программы.
Пользователи решили эту проблему с помощью различных подходов. Некоторые пользователи рекомендуют просто использовать две клавиши Control на типичных клавиатурах ПК, таких как клавиши Shift, при наборе текста вслепую, чтобы не чрезмерно напрягать левый мизинец, правильное использование клавиатуры уменьшит RSI. К программным методам относятся:
ergoemacs-mode
).ace-jump-mode
или расширения elisp, которые предоставляют аналогичные функции многоуровневой навигации, во-первых запрос символа, а затем замена вхождений символа клавишами доступа для перемещения курсора.evil-mode
, расширенный уровень эмуляции.god-mode
, который обеспечивает подход, аналогичный vim's с режим для ввода команд Emacs без клавиш-модификаторов.Space
используется в качестве основного ключа для запуска управляющих последовательностей. В проекте также широко используются как evil-mode
, так и god-mode
.viper-mode
, который позволяет использовать раскладку клавиш vi для основного редактирования текста и схему Emacs для более продвинутых функций.Mx
. Сам Mx также может быть восстановлен.Аппаратные решения включают специальные клавиатуры, такие как Контурная клавиатура Kinesis, которая размещает клавиши-модификаторы там, где ими можно легко управлять. с помощью большого пальца или клавиатуры Microsoft Natural, большие клавиши-модификаторы которой расположены симметрично по обеим сторонам клавиатуры и могут быть нажаты ладонью. Также можно использовать ножные педали.
Emacs pinky - относительно недавняя разработка. Клавиатура Space-cadet, на которой был разработан Emacs, имела слишком большие клавиши управления, которые находились рядом с пробелом, и до них было легко дотянуться большим пальцем.
слово emacs иногда употребляется во множественном числе как emacsen по фонетической аналогии с boxen и VAXen, относящимися к разным разновидностям Emacs.
В Викицитатнике есть цитаты, относящиеся к: Emacs |
Викискладе есть медиафайлы, связанные с Emacs. |
Викибукс имеет больше по теме: Emacs |