![]() |
![]() |
![]() |
||||||||||
![]() |
|
клавиатурной
комбинации. Зато большинство команд привязаны к нажатиям одной
клавиши, и даже перемещаться по тексту в командном режиме можно,
не сбрасывая кисть на дополнительную клавиатуру со стрелками, а
нажимая алфавитные клавиши в центре клавиатуры. Адепты vi -- программисты
и системные администраторы -- очень серьезно относятся
к экономии времени и энергии за счет минимизации движения пальцев.
Emacs
-- пример "безрежимного" или,
если угодно, "однорежимного" редактора: пользователь всегда
находится в режиме непосредственного редактирования текста в точке
курсора, а команды издает, нажимая сложные сочетания клавиш и, при
необходимости, вводя параметры команд в отдельном окне. Из-за стремления
обеспечить прямую клавиатурную привязку как можно большему количеству
команд и следующей из нее сложности используемых клавиатурных
сочетаний был даже пущен слух о том, что Emacs расшифровывается
как "Esc-Meta-Alt-Ctrl-Shift" (хотя на деле,
конечно, клавиатурные аккорды все же не так сложны, а Emacs -- это
просто Editing MACroS, т.е. "макрокоманды редактирования").
В
действительности различие это скорее идеологическое,
чем прагматическое: в современных версиях vi в большинстве
случаев также можно осуществить привязку часто употребляемых
команд к клавиатурным комбинациям и выполнять их из режима
редактирования, а в Emacs можно достаточно точно (если кому-то это
потребуется) сымитировать командный режим, характерный для многорежимных
редакторов.
2.4
Дидактика редакторов
Реальное
очень значимое отличие заключается в том, что
по своей архитектуре vi -- более или менее монолитная программа
(с вытекающей отсюда компактностью), а Emacs -- на самом
деле, расширяемая (программируемая) коллекция макрокоманд редактирования,
написанных на Emasc Lisp (диалекте известного языка функционального
программирования). Лишь небольшое количество часто выполняемых
и требовательных к ресурсам команд встроены в саму программу
и написаны на компилируемом C, большинство же команд написаны
на Lisp и могут изменяться или дополняться пользователями (или
профессиональными программистами по заказу пользователей).
За
четверть века существования Emacs, благодаря свободной
модели лицензирования и открытой модели разработки, "оброс" невероятным
количеством макрокоманд, "затачивающих" его под
синтакcические особенности различных формальных языков (включая, но
не ограничиваясь языками программирования и языками разметки), а также
реализующих приложения, традиционно слабо ассоциируемые с "просто
редакторами". Например, не выходя из Emacs, можно работать
с электронной почтой и службами новостей USENET (а также с гипертекстом
со страничек WWW).
Или
-- что не менее интересно -- не выходя
из Emacs, можно прогнать текст программы через компилятор и подсветить
синтаксические ошибки или предупреждения, воспользоваться символьным
отладчиком или профилировщиком (реально, Emacs образует |
![]() |
![]() |
|