Emacs: редактор, который думает, что он операционная система

Emacs: редактор, который думает, что он операционная система

В 1976 году в Массачусетском технологическом институте двое программистов — Гай Стил и Ричард Столлман — сели за терминалы и начали писать макропакет для текстового редактора TECO. Параллельно, в трёх с половиной тысячах километров к западу, на территории Калифорнийского университета в Беркли, аспирант Билл Джой через слабый телефонный модем настраивал визуальный режим редактора ex, и его поделка вскоре получила имя vi.

Оба проекта родились в один год. Оба до сих пор активно развиваются и используются миллионами программистов. Оба породили самую долгоиграющую культурную войну в истории нашей профессии — «редакторские войны», начавшиеся в юзенетовских рассылках 1985 года и не утихающие до сих пор. Это не просто разные клавиатурные сочетания и не просто разные подходы к работе с текстом. Это две философии, два разных мнения по поводу того, чем должен быть инструмент программиста.

Этот пост — об одном из этих двух инструментов, о Emacs. Я расскажу о его странном рождении из макросов чужого редактора и о невероятной живучести (полвека в строю и ноль признаков смерти). Покажу, как внутри него поселился Lisp-интерпретатор и почему отсюда родилась знаменитая шутка, что Emacs — это «прекрасная операционная система, в которой не хватает только хорошего текстового редактора». Доберусь до современных дистрибутивов вроде Doom Emacs и Spacemacs, благодаря которым в 2026 году в Emacs продолжают приходить молодые программисты. И, конечно, упомяну vi — без него в этой истории не обойтись, потому что Emacs во многом определяется именно через контраст с этим своим вечным соседом по индустрии.

Я не буду делать вид, что эта тема нейтральна. Любой человек, который всерьёз работал с любым из этих двух редакторов, имеет своё мнение, и его мнение, скорее всего, противоположно вашему. Я постараюсь отдать обоим должное и не воевать ни на чьей стороне. Хотя, признаюсь, к Emacs у меня личное уважение особое — за объём идей, которые в нём поместились. Однако сам я пока до использования Emacs не дорос и использую Neovim. Но мне очень любопытно, какой может стать моя жизнь, если я начну всерьёз работать в Emacs. Где бы только найти на всё время. Или несколько жизней.

1. 1976 год, MIT, и редактор по имени TECO

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

Главный текстовый редактор Лаборатории искусственного интеллекта MIT в начале 1970-х назывался TECOText Editor and Corrector. Он был написан ещё в 1962 году для машины PDP-1, потом портирован на PDP-6 и PDP-10. К середине 1970-х TECO был старым, заслуженным, мощным и при этом совершенно нечитаемым редактором. Его команды представляли собой короткие шифры из пары символов. Составленная из этих команд программа могла выполнять сложные правки текста, но прочесть её постороннему человеку было сложно или даже невозможно. В хакерской культуре MIT была шутка про «TECO в стиле line noise», когда строчка команд выглядела буквально как помехи на телефонной линии.

При этом TECO был расширяемым. Можно было писать макросы — короткие наборы команд, объединённые в одну именованную процедуру, которые потом запускались одной кнопкой. Это превращало TECO в нечто среднее между редактором и языком программирования.

К 1976 году в MIT AI Lab каждый продвинутый пользователь имел свой собственный набор макросов для TECO. У одного — для разметки текста. У другого — для работы с файлами кода на LISP. У третьего — для писем в ARPANET. Эти наборы получили названия — TECMAC, TMACS, RMODE, DOC, MACROS — каждый со своей логикой клавиш и своими привычками. Если в лабораторию заходил новый сотрудник и спрашивал «как мне отредактировать файл?», его первый ответ был «зависит от того, чьим набором ты хочешь пользоваться».

Это был тот самый момент, когда стало понятно, что пора унифицировать редактор.

2. Стэнфорд 1976: визит и идея

В том же 1976 году Ричард Столлман съездил в Стэнфорд-AI-Lab — лабораторию искусственного интеллекта Стэнфордского университета. Там он увидел редактор по имени E, написанный Фредом Райтом, и был впечатлён. E работал в режиме, который сейчас мы называем WYSIWYG (What You See Is What You Get): когда вы нажимаете клавишу, изменение сразу появляется на экране, без необходимости вводить команду «обновить дисплей». TECO так работать не умел, его дисплейный режим был неполноценным.

Столлман вернулся в Кембридж с мыслью, что нужно сделать то же самое с TECO. И обнаружил, что у его коллеги по AI Lab по имени Карл Миккельсен уже был зачаток такого режима — модификация TECO под названием Control-R, в которой экран автоматически обновлялся после каждого нажатия клавиши. Столлман переписал этот код, чтобы он работал эффективнее, и добавил к нему поддержку макросов внутри display-режима: теперь любая клавиша могла быть переопределена так, чтобы запускать произвольную TECO-программу.

Это и был последний кирпичик. Гай Стил, ещё один хакер MIT AI Lab (тот самый Стил, который позже станет соавтором стандарта Common Lisp, спецификации Java и кучи другого), предложил Столлману объединить все циркулирующие в лаборатории макропакеты в один общий набор с симметричной системой клавиатурных сочетаний. Стил и Столлман сели за терминалы и за одну ночь написали базовый каркас: систему поиска и выполнения команд.

Через неделю Стил отошёл от проекта (вернулся к своим обязанностям), а Столлман уже один довёл его до готового состояния. К Новому 1977 году новый объединённый редактор уже теснил TECMAC и TMACS. Через год TECMAC и TMACS были полностью вытеснены.

Имя проекта — Emacs — расшифровывалось как Editor MACroS («макросы редактора»). По другой, апокрифической версии — в честь популярного в Бостоне магазина мороженого Emack & Bolio’s, который Столлман часто посещал, и в названии которого слышалось то же слово. Сам Столлман потом будет иронизировать на эту тему, но никогда не станет отрицать апокриф полностью.

В любом случае, к 1977 году в MIT появился новый стандарт редактирования текста — Emacs, написанный поверх TECO как набор макросов.

3. Множественные Имаксы: EINE, ZWEI, Gosling Emacs

С 1977 по 1984 годы Emacs пережил период бурного размножения. Когда исходный код у вас свободно доступен (а в MIT AI Lab он именно так и был доступен), и когда сам редактор написан в стиле «расширяй как хочешь», у людей мгновенно возникает желание сделать свою версию.

Появились EINE (рекурсивный акроним EINE Is Not EMACS, «EINE — это не EMACS») и ZWEI (ZWEI Was EINE Initially, «ZWEI был сначала EINE») — обе написаны Дэниелом Уайнребом и Майком Макмагоном для Lisp-машин. Они отличались тем, что были написаны на Zetalisp, а не на TECO. Из ZWEI потом вырастет Zmacs.

В Honeywell Bernard Гринберг написал MulticsEmacs в 1978 году — версию для операционной системы Multics. Он же первым реализовал значительную часть Emacs в Lisp, превратив его из редактора с макросами в полноценную Lisp-машину с текстовым интерфейсом.

В Bell Labs Джеймс Гослинг, тот самый, который позже создаст Java, написал Gosling Emacs, или gosmacs — реализацию на C для UNIX-систем. Гослинг впервые продал свой Emacs коммерчески (его лицензировала компания UniPress), и именно история с этой коммерциализацией позже окажется одним из формирующих моментов в политическом пути Столлмена.

К 1983-му в мире было около десятка различных программ под названием «Emacs», и было понятно, что нужна единая, по-настоящему свободная, версия, которая станет ядром нового открытого проекта.

4. 1984: GNU Emacs

В сентябре 1983 года Ричард Столлман объявил о начале работы над операционной системой GNU. Первой крупной программой в составе ОС стал GNU Emacs — переписанный с нуля свободный редактор на основе всех накопленных к тому моменту идей. Релиз GNU Emacs 13 (первой публичной версии) состоялся 20 марта 1985 года.

GNU Emacs принципиально отличался от своих предшественников двумя вещами.

Во-первых, он был написан на собственном диалекте Lisp — Emacs Lisp (elisp). Сам Emacs состоял из небольшого ядра на C, в котором был интерпретатор elisp, и огромного объёма функциональности, написанной непосредственно на elisp. Это означало, что любую часть редактора можно изменить, не пересобирая его. Вы открываете .emacs-файл, пишете там пару строк на elisp, перезагружаете конфигурацию — и редактор уже работает по-новому. Любую функцию можно переопределить. Любую клавишу можно перенастроить. Любое меню можно перестроить. Это была не настройка редактора — это было программирование редактора прямо во время работы.

Во-вторых, он был свободным. GNU Emacs распространялся под GNU General Public License (GPL) — той самой лицензией, которую Столлман к тому моменту разрабатывал и которая впервые официально вышла в 1989-м. Любой человек мог взять Emacs, изучить его код, изменить под свои нужды, распространять дальше. И при этом любые производные работы тоже должны были оставаться свободными.

Эти два качества вместе превратили GNU Emacs в нечто большее, чем просто редактор. По выражению Столлмена, это был «self-documenting, customizable, real-time display editor» — «самодокументирующийся, настраиваемый редактор отображения в реальном времени». Под «самодокументирующимся» Столлман имел в виду, что любая команда Emacs знает, как объяснить, что она делает, прямо из самого редактора (нажмите C-h k и любую клавишу, и Emacs скажет, что эта клавиша делает, и покажет вам исходный код её обработчика).

5. Emacs как операционная система

К 1990-м годам Emacs накопил такой объём функциональности, что от него начали отшучиваться:

Emacs — это прекрасная операционная система, в которой не хватает только хорошего текстового редактора.

Шутка появилась не на пустом месте. Внутри Emacs к этому моменту жили:

  • GNU Info — браузер документации GNU, по сути локальный гипертекстовый редактор.
  • Gnus — почтовый и Usenet-клиент.
  • VM — другой почтовый клиент.
  • Org-mode — система ведения заметок и планирования, разработанная Карстеном Домиником в 2003-м; сегодня по ней пишут диссертации, ведут календари, делают презентации, управляют проектами.
  • Magit — клиент для Git, по общему мнению лучший в мире (даже многие пользователи терминала используют именно его).
  • TRAMP — прозрачный доступ к удалённым файлам по ssh, ftp, rsync и десяткам других протоколов прямо из редактора.
  • dired — файловый менеджер, по совместительству тоже редактор (можно прямо в нём массово переименовывать файлы, как обычный текст).
  • eshell — встроенная командная оболочка, написанная на elisp.
  • calc — научный калькулятор класса Mathematica, тоже целиком на elisp.
  • doctor — простейший ИИ-психотерапевт (реализация знаменитого ELIZA Джозефа Вейценбаума 1966 года).
  • tetris, snake, doctor — да, в Emacs встроены игры. Команда M-x tetris запускает Тетрис.

И всё это взаимодействует друг с другом через единый интерфейс. В одном буфере Emacs у вас может быть открыт код на Python, рядом — Org-mode-документ с TODO-листом, в нижней панели — терминал с запущенным тестом, в правой панели — Magit с пуш-кнопкой, и всё это управляется одними и теми же базовыми клавиатурными сочетаниями. По сути, это окружение, которое заменяет вам половину операционной системы. Многие пользователи Emacs действительно проводят в нём весь рабочий день, выходя только за браузером и видеоконференциями.

Шутка про «операционную систему» не такая уж и шутка.

6. И в это же время в Беркли — vi

Параллельно, в том самом 1976 году, в Калифорнийском университете в Беркли разворачивалась совсем другая история.

Билл Джой — аспирант, который через несколько лет станет одним из основателей Sun Microsystems и автором языка Java-подобной модели concurrent computing, — сидит дома в Беркли. У него медленный модем (300 бод) и терминал ADM-3A без отдельных клавиш стрелок. Он работает с редактором ed — текстовым линейным редактором Кена Томпсона, в котором вы пишете команды одну за другой, и редактор показывает по одной строке за раз. Это утомительно.

Летом из Лондона приезжает в гости Джордж Куло́рис, преподаватель Queen Mary College, который незадолго до этого написал свой собственный редактор em (editor for mortals — «редактор для смертных») — улучшенную версию ed с полноэкранным интерфейсом. Куло́рис показывает свой em Джою. Джой впечатляется.

В течение следующих месяцев Джой и Чак Хейли пишут поверх ed свой собственный редактор — сначала en, потом ex, в октябре 1977-го добавляют к ex полноэкранный визуальный режим. Этот визуальный режим вызывается командой vi — сокращением от visual.

К марту 1978 года ex 1.1 выходит в составе первой Berkeley Software Distribution (BSD) UNIX. К маю 1979 во второй BSD редактор поставляется уже под отдельным именем vi, которое сразу запускает ex в визуальном режиме. С этого момента vi — стандартный редактор UNIX на следующие сорок лет.

В 1991 году голландец Брам Моленар напишет Vim (Vi Improved) — улучшенный клон vi, который сегодня и считается «тем самым vi» практически в любом контексте.

7. Почему vi такой странный

vi знаменит модальной моделью редактирования. Когда вы открываете vi, вы оказываетесь в командном режиме (Normal mode), в котором обычные буквы алфавита не печатают букву, а выполняют команды. j — спустить курсор на строку вниз. k — поднять на строку вверх. h — налево. l — направо. d плюс что-то — удалить. y — скопировать. p — вставить. Чтобы начать вводить текст, надо специально нажать i (insert) или a (append) — переключиться в режим ввода. Потом, чтобы вернуться в командный режим, нажимаете Escape.

Это контринтуитивно. Это сразу отпугивает новичков (есть бесчисленные мемы про людей, открывших vi и не сумевших выйти). И при этом это гениально эффективно, если потратить пару недель на привыкание: в vi сложные правки выполняются за два-три нажатия клавиш. Удалить три слова — d3w. Скопировать абзац — yap. Заменить всё «foo» на «bar» в файле — :%s/foo/bar/g. Эти команды складываются в грамматику, в которой оператор (что делать) сочетается с движением (с чем именно), и в этой грамматике можно выразить почти любую правку.

Почему Джой сделал именно так? Он сам объяснял много раз — это были вынужденные ограничения. У него был медленный модем — 300 бод, то есть около 30 байт в секунду. Это значит, что обновить весь экран было операцией мучительно медленной: пара секунд. У Джоя не было возможности позволить редактору перерисовывать экран после каждого нажатия. Поэтому он сделал команды короткими, однобуквенными и немодальными в смысле обновления экрана: одно нажатие — одно изменение в файле, без перерисовки. Это и было то самое модальное редактирование, которое позволяло работать осмысленно даже через 300 бод.

«Люди, делавшие Emacs, сидели в лабораториях MIT с тем, что по нынешним меркам было оптоволоконными каналами связи. Они работали на PDP-10, огромной по сравнению с нашим железом машине, с бесконечно быстрыми экранами. Поэтому у них могли быть забавные команды с мерцанием экрана и всё такое. А я в это время сидел дома в бараках излишков после Второй мировой войны на территории Беркли, с модемом и терминалом, который еле выводил курсор. Это был мир, который сейчас вымер. Люди не знают, что vi был написан для мира, которого больше нет».

— Билл Джой, интервью Linux Magazine, 1999

Эта цитата — лучший ключ к редакторским войнам. Vi был оптимизирован под жестокую экономию ресурсов. Emacs был оптимизирован под богатую интерактивную среду. Это не вопрос «кто прав», это вопрос «в каком мире вы живёте».

8. Модальный vs немодальный: философский раскол

Главное различие между Emacs и vi — даже не в конкретных клавишах, а в подходе к самой идее редактирования.

vi (и Vim) — модальный. Редактор всегда находится в одном из режимов: командном, ввода, визуального выделения, и т. д. Одна и та же клавиша делает разные вещи в разных режимах. Это даёт очень короткие, чистые, композициональные команды — но требует постоянно держать в голове, в каком режиме ты сейчас находишься.

Emacs — немодальный (modeless). Редактор всегда находится в одном и том же состоянии. Буквы алфавита печатают буквы. Команды вызываются через аккорды — нажатия Ctrl, Meta (Alt) и Super в комбинации с буквами. C-f (Ctrl-F) — на символ вперёд. M-f (Alt-F) — на слово вперёд. C-x C-s — сохранить. C-x C-c — выйти. Это похоже на то, как сегодня устроены сочетания в любом графическом приложении (Ctrl-C для копирования и т. д.) — только Emacs сделал это первым, ещё в 1976-м.

Из этой разницы вытекает всё остальное.

Кривая обучения. Vi/Vim страшнее в первые две недели, потом раскрывается. Emacs мягче в первые часы, но требует постоянного запоминания клавиатурных аккордов, которых сотни.

Расширяемость. vi настраивается через VimScript (или Lua в новейшем Neovim). Emacs настраивается через Emacs Lisp — полноценный диалект Lisp, в котором написан сам Emacs, и в котором можно прямо во время работы переопределить любую функцию редактора.

Объём функциональности. vi — заточен под одну задачу: эффективное редактирование текста. Emacs стремится охватить всё рабочее окружение программиста.

Запуск. vi запускается мгновенно. Emacs — традиционно медленно (хотя в Emacs 28 появилась нативная компиляция elisp, которая ускорила всё в разы, и время запуска сократилось с нескольких секунд до полусекунды).

Эмоциональная окраска у пользователей. Vi-пользователи обычно считают, что они выбрали инструмент минимализма и эффективности. Emacs-пользователи — что они выбрали инструмент глубины и универсальности. Каждая сторона свысока поглядывает на другую.

Религия в чистом виде.

9. Редакторские войны

Война началась в Usenet примерно в 1985 году и идёт до сих пор. На любой популярный пост про текстовые редакторы в HackerNews, Reddit или Lobste.rs предсказуемо приходят люди обеих сторон и начинают спор, в котором не убедить никого. На GitHub есть проекты, чья единственная цель — троллить противоположную сторону. Шутки про «как выйти из vi» стали мемами.

Эрик Реймонд в The Jargon File зафиксировал: «editor war» — устойчивый термин хакерского лексикона с 1985-го.

При этом сама война давно стала почти карикатурной. Эпоху, когда выбор редактора реально определял продуктивность программиста, давно сменила эпоха IDE с автодополнением, рефакторингом, LSP-серверами и графическими интерфейсами. Сегодня большинство профессиональных программистов пользуются VSCode, JetBrains-IDE или Cursor, и эти инструменты вобрали в себя всё лучшее из обоих миров: VSCode имеет официальный плагин Vim-эмуляции (модальное редактирование) и Emacs-keymap (немодальное), JetBrains-IDE — то же самое.

Но люди, которые остались на чистом Emacs или Vim, сделали это сознатель. Они уже знают, что VSCode существует, но он им не подходит. Им нужен инструмент, в котором они сами решают, как будут работать, а редактор указывает, как с ним взаимодействовать.

Это в каком-то смысле и есть главный водораздел: между готовым и настраиваемым. И Emacs здесь — крайняя точка спектра «настраиваемого».

10. Современный Emacs: Doom, Spacemacs и Lisp-возрождение

Если бы Emacs остался редактором из 1985 года, он бы давно умер. Но он умудрился пережить четыре больших технологических сдвига: переход с PDP-10 на UNIX, переход на персональные компьютеры, переход на графические среды, теперь — переход к LSP/Tree-sitter/нативной компиляции.

И в нём за это время произошло несколько вещей, которые сделали его пригодным для современного программиста.

Emacs 28 (2022) — нативная компиляция elisp. До этого все функции редактора интерпретировались на ходу, что для миллионов строк elisp означало заметную медлительность. Native-comp компилирует elisp в нативный машинный код, и в результате Emacs стал в 3–10 раз быстрее по большинству операций.

Emacs 29 (2023) — встроенная поддержка LSP (Language Server Protocol, тот же протокол, на котором работают VSCode-плагины для языков) и Tree-sitter (новый стандартный парсер для подсветки синтаксиса). Это означает, что любой современный язык программирования из коробки работает в Emacs с тем же уровнем умных подсказок, что и в VSCode.

Pure GTK (Emacs 29) — нативная поддержка Wayland. Emacs наконец-то работает на современном Linux-десктопе без хаков.

И главное — два дистрибутива Emacs, которые радикально упростили вход в этот мир:

  • Spacemacs — появился в 2014 году, изначально как «Emacs для перебежчиков из Vim». Из коробки идёт с Evil-mode (полная Vim-эмуляция, можно использовать клавиши h/j/k/l, командный режим и т. д.) и красивым, продуманным интерфейсом. Все настройки делаются через декларативный конфигурационный файл с понятными «слоями» функциональности.

  • Doom Emacs — появился в 2017-м. Минималистичнее Spacemacs, ближе к обычному Emacs, очень быстро запускается (благодаря native-comp — меньше секунды от вызова команды до полностью готового окна). Стал в последние пару лет основным «дистрибутивом Emacs для новичков». Я бы сказал, что сегодня большинство людей, открывающих Emacs впервые, начинают с Doom.

Оба дистрибутива решают главную традиционную проблему Emacs, что без двух-трёх лет настройки он выглядит почти так же, как в 1985 году. С Doom или Spacemacs вы получаете готовое современное окружение прямо из коробки.

В сообществе сейчас (2026 год) — небольшой ренессанс. Люди возвращаются к Emacs после многих лет в VSCode по двум причинам. Первая: org-mode действительно лучшая в мире система ведения заметок и личных знаний, и попытки её клонировать вне Emacs (Logseq, Foam) до сих пор не дотягивают. Вторая: Magit действительно лучшая в мире обвязка над Git, и пользователи Magit обычно остаются в Emacs ровно ради него.

11. Lisp как тайная сверхспособность

Я уже упоминал, что Emacs написан в основном на Emacs Lisp (elisp) — собственном диалекте Lisp. Этот факт обычно подаётся в технических обзорах как любопытная деталь. На самом деле это сердце всей идеологии Emacs.

В большинстве редакторов конфигурация — это отдельный файл с настройками, который читается при запуске. Вы что-то меняете, перезапускаете — изменения вступают в силу. Это статичная конфигурация.

В Emacs конфигурация — это код. Ваш ~/.emacs.d/init.el — не настройки, а программа на Lisp, которую Emacs выполняет при запуске. Эта программа может определять новые функции, переопределять старые, добавлять хуки на события, переписывать поведение любых частей редактора. И, что важнее всего, эту программу можно изменять прямо во время работы: написали функцию, нажали C-x C-e — и она тут же доступна. Никаких перезапусков.

Это — то самое, что делает Emacs уникальным. Это не настраиваемый редактор. Это Lisp-машина, в которой по совместительству есть текстовый редактор. Большая часть функциональности Emacs реализована не в C, не в скомпилированном виде, а как обычные elisp-функции, которые вы можете прочитать, изменить, заменить.

Это требует определённого склада ума: вам должно быть интересно писать код, чтобы он редактировал текст. Если вам нужно просто эффективно набирать текст и не возиться с интеграциями, вам не нужен Emacs. Лучше используйте VSCode или Vim. Но если вы из тех, кому нравится сама идея «программируемого окружения», — вы найдёте в Emacs друга на всю жизнь.

Это, кстати, ещё одно объяснение, почему Emacs всё ещё жив через полвека. Внутри него — Lisp, один из самых выразительных и долгоживущих языков программирования в истории (Lisp придумал Джон Маккарти в 1958-м, и он переживает уже несколько эпох; я уже запланировал написать про Lisp отдельный пост). А Lisp устроен так, что может моделировать любые другие парадигмы программирования — то, что мы сегодня называем функциональным программированием, было в Lisp с самого начала. Объектное программирование? CLOS. Метапрограммирование? Макросы. Асинхронность? Что угодно. Поэтому elisp-сообщество всегда могло добавить в Emacs любую современную парадигму: Lisp как язык настолько гибок, что встраивает их без боли.

В vi такой возможности нет. Vim-script — это специализированный язык исключительно для настройки Vim, в нём невозможно написать ничего интересного за пределами редактора. Когда сообщество Vim это поняло, они сделали Neovim — современный форк, который вместо VimScript использует Lua. Это шаг в правильном направлении, но это всё равно не Lisp-машина: Lua вшивается в Neovim как чужеродный язык, а elisp и есть Emacs.

12. Что в итоге выбрать в 2026 году

Если вы ещё не выбрали инструмент и думаете, стоит ли в 2026 году учить Emacs или Vim, мой честный ответ — зависит от того, чего вы хотите.

Если вам нужен просто хороший редактор, который работает из коробки и в котором можно писать код — берите VSCode, Sublime Text, Zed или JetBrains-IDE. Через десять минут после установки вы продуктивны.

Если вы цените эффективное модальное редактирование и хотите минималистичный инструмент — берите Vim (или Neovim). Через две недели практики вы научитесь работать в нём быстрее, чем в любом IDE.

Если вы любите идею программируемого окружения, обожаете возиться с инструментом, хотите org-mode и Magit, и готовы вложить полгода в постепенное обживание системы — берите Emacs. Лучше всего Doom Emacs: это самый быстрый способ войти в современный Emacs без болезненных трёх лет настройки.

Если вы хотите всё сразу и не определились, установите VSCode и добавьте к нему плагин Vim-эмуляции. Это компромисс, который сейчас выбирает большинство, и это разумно.

Сам факт, что в 2026 году инструмент, разработанный в 1976-м, до сих пор остаётся для значительной доли программистов рабочим выбором — он не случайный. Emacs пережил столько технологических эпох, потому что внутри него — не редактор, а программируемое окружение. А окружение, в котором можно перепрограммировать что угодно, не устаревает: оно подстраивается под любую новую эпоху своими же средствами.

13. Финал: два мира, одна задача

Возвращаясь к началу: в 1976 году в MIT и в Беркли два человека написали два редактора, каждый из которых стал стандартом своей школы программирования. Через пятьдесят лет оба инструмента всё ещё активно развиваются и используются миллионами. Они разные. Они спорят. Они никогда не помирятся.

И в этом — главное наблюдение про инструменты программиста. Хороший инструмент — это не «правильный», а тот, который вы выбираете в полном осознании альтернатив. Vim — отличный выбор, если вы цените модальное редактирование и минимализм. Emacs — отличный выбор, если вы хотите программировать сам редактор. VSCode — отличный выбор, если вам нужно работать прямо сейчас, без месяцев настройки. Vim и Emacs в 2026-м — это не «лучше, чем VSCode». Это другое решение задачи, которое подходит другому типу человека.

Сам я работаю в Neovim, и он мне нравится: модальное редактирование, Lua-конфигурация, быстрая интеграция с LSP — всё на месте. Но к Emacs у меня глубокое уважение, несмотря на то, что я пока им не пользуюсь. Мне нравится сама идея, что редактор может быть в первую очередь Lisp-машиной, в которой можно написать что угодно. И что после полувека развития эта Lisp-машина всё ещё живёт, развивается и обрастает новой функциональностью — нативной компиляцией, LSP-сервером, Tree-sitter, Wayland, чем угодно. Без шума, без рекламы, без венчурного финансирования. Просто потому, что определённый тип людей продолжает её использовать и улучшать.

В следующем посте я расскажу про Lisp — язык, который оказался внутри Emacs и который сам по себе живёт уже почти семьдесят лет. У него ещё более удивительная история.


Дополнительное чтение

Историческое

  • The original announcement of EMACS, Стэнфорд, 1981 — статья Столлмена об устройстве и философии раннего Emacs. Читается отлично, многое из тогдашних соображений до сих пор актуально.
  • Emacs Historical Archive — собрание оригинальных исходников TECO-Emacs, MulticsEmacs, Gosling Emacs и других.
  • «Where Vim Came From» — отличная популярная статья о происхождении vi из ed → em → ex → vi.
  • «The True History of vi» (Lunduke) — детальная хронология истории vi.

Современный Emacs

  • Doom Emacs — рекомендованный мной дистрибутив для входа в современный Emacs.
  • Spacemacs — альтернативный дистрибутив, более «фреймворковый».
  • Mastering Emacs — лучший современный сайт-учебник по Emacs.
  • Emacs Wiki — гигантская коллективная wiki со всем, что нужно знать.

Видео

📺 «Emacs is sexy» — обзор современных возможностей Emacs (2023).

📺 Getting Started With Doom Emacs — серия видео про Doom Emacs.

Для сравнения — Vim

  • Vim Tutor — стандартный туториал, поставляется с любым Vim/Neovim, запускается командой vimtutor.
  • Neovim — современный форк Vim с поддержкой Lua и LSP.
  • «The Editor War» — статья в Википедии об истории редакторских войн.
Предыдущий
Наверх