Vim и Emacs — это, пожалуй, самый древний и легендарный «братский» конфликт в мире текстовых редакторов. Одни говорят: «Люди делятся на тех, кто знает Vim, и тех, кто знаком с болью и страданием». Другие возражают: «Emacs на самом деле полноценная операционная система, где просто не хватает хорошего текстового редактора».
Давайте попробуем окунуться в историю этого противостояния и собрать любопытные (а местами и безумные) факты о Vim и Emacs.
Содержание
Почему «битва древняя»?
Vi родился в конце 1970-х годов в среде UNIX. Первоначально это была модификация ex, созданная Биллом Джоем (Bill Joy), сооснователем Sun Microsystems.
Emacs появился в 1976 году благодаря Ричарду Столлману (Richard Stallman), который объединил несколько макросов для редактора TECO (откуда, кстати, и пошло название — Editor MACroS).
Оба эти редактора прошли через десятилетия эволюции. В настоящее время под именем Emacs чаще всего подразумевается GNU Emacs, а под vi — обычно Vim (Vi Improved), который создал Брэм Муленар (Bram Moolenaar) в конце 80-х.

Фанатские войны (или религия текстовых редакторов)
Говорят, пользователи Vim видят лишь один реальный путь: команды, режимы (Normal, Insert, Visual) и магическую клавишу Esc
, которая определяет ритм работы.
Эмаксеры гордо заявляют: «Это не просто редактор, это операционная система, где можно сделать всё, что угодно — от чтения почты до игры в Tetris». Да, вы не ослышались, в Emacs есть встроенные игры.
Существует мем: «Emacs — это восемь мегабайт непрерывно расширяющегося SWAP-а» (Eight Megabytes And Constantly Swapping). Это, конечно, избыточное упоминание, ведь в реальности Emacs уже давно «съедает» больше памяти (теперь это могут быть сотни мегабайт!).
У Vim своя гордость: где ещё можно свести с ума новичка, когда он застревает в самом редакторе и не понимает, как из него выйти? «Помогите, я не могу выйти из Vim!» — стала классической шуткой.

«Vim vs. Emacs» и мифы о производительности
Vim известен своей лёгкостью и скоростью. Фанаты утверждают: «Если ты пишешь код в консоли на медленной виртуалке через SSH, Vim всё равно не подведёт».
Emacs зачастую называют тяжеловесом, но это отнюдь не мешает сообществу добавлять туда всё новые возможности — встроенный чат, почтовый клиент, браузер, органайзер (Org mode) и даже DOOM Emacs (быстрая конфигурация редактора в стиле игры DOOM).
Периодически всплывают бенчмарки, где сравнивают, кто быстрее открывает большие файлы или насколько экономно расходует память. На деле здесь многое зависит от привычки и требований пользователя.
Расширения и плагины
В Emacs можно:
Играть в Tetris, Snake, Pong и многое другое.
Читать почту через встроенный Gnus.
Слушать музыку.
Использовать Org mode для планирования жизни.
В Vim тоже есть масса плагинов, хоть они менее «игровые»:
Чат в Vim — было несколько попыток заставить редактор служить мессенджером.
Vim-Beats или «музыкальные» плагины.
Тонна игр, включая сбор плиток 2048.
-
Превратить статус в Nyan Mode (см. картинку ниже).
Кот показывает ваше положение в файле
Полезно, но непонятно: моды и хоткеи
Самая большая боль новичков: как переключаться между режимами?
В Vim есть минимум три основные режима: Normal, Insert и Visual. Плюс ещё «бог знает сколько» более экзотических (Command-line, Select, Ex и т.д.).
Emacs не полагается на режимы, там действуют комбинации клавиш в духе:
Ctrl + X, Ctrl + C
(выйти),Ctrl + X, Ctrl + S
(сохранить) и проч. Мышцы пальцев быстро учат новое положение, хотя изначально всё это кажется странным.
Интересный факт: в Emacs существуют «evil-mode» и «viper-mode», эмулирующие работу в стиле Vim. А в Vim есть плагины, делающие «Emacs-like» биндинги. Фактически, можно превратить Emacs в Vim или Vim — в Emacs, что иногда вводит людей в ступор.
Бородатые шутки
Как выйти из Vim?
Мем, который сопровождает редактор уже многие годы. Люди шутят, что уже проще выключить компьютер, чем вспомнить, что нужно нажать Esc
, потом набрать :q!
и нажать Enter
.

Emacs как операционная система.
«В Emacs можно сделать всё, даже варить кофе, если прикрутить нужный расширитель». Звучит смешно, но фанаты действительно умудряются через Emacs читать новости, писать код, составлять ToDo-листы и ещё стримить на Twitch.
Ctrl+Alt+Shift + ...
Легенды о сложных сочетаниях клавиш в Emacs... Иногда создаётся ощущение, что для чего-то элементарного нужно нажать все существующие модификаторы.
«Загружу-ка я Emacs»
Шутки про то, что Emacs медленно запускается, а во время этого успевает «пробежать» ваша целая жизнь. Впрочем, это уже не так актуально в эпоху быстрых SSD и быстрых процессоров.
А что насчёт расширенных возможностей?
Emacs легко модифицировать с помощью языка Emacs Lisp: вы можете создавать самые сумасшедшие функции и пакеты — от автогенерации документации до написания собственных игр.
Vim использует собственный скриптовый язык Vimscript, а также способен работать с Python, Lua и прочими интерпретаторами для мощных плагинов и автоматизаций.
При всём этом оба редактора — полностью Open Source. А ещё в каждом полно тонких особенностей вроде мета-регистров, буквенных буферов, ключевых последовательностей, которые сложно отследить.
Любопытный момент исторической эволюции
Эпоха GNU: Emacs сыграл роль флагманского проекта вместе с компилятором GCC и другими инструментами FSF (Free Software Foundation).
Развитие vi/Vim: со временем vi «прокачался» до Vim благодаря Брэму Муленару, и вот уже много лет Vim поддерживает полноценные плагины, графический интерфейс (GVim) и прочие удобства, которые помогают не отставать от «тяжеловесного» Emacs.
Иными словами, мы видим, как два проекта шли параллельными путями, но каждый раз удивляли мир странными и невероятными решениями.
Vim vs. Emacs: так кто победит?
Ответ очевиден: никто. В реальности многие разработчики удерживают оба редактора в своём арсенале. Иногда удобно открыть Emacs для сложной интеграции с окружением, а иногда «быстрый» Vim спасает, когда нужно отредактировать файл за секунды.
При этом существует и третья категория: пользователи, которые давно работают в Visual Studio Code, Sublime, JetBrains IDE (да, там тоже есть плагины, которые эмулируют Vim или Emacs). Так что «война» давно перестала быть дуэлью, превратившись в праздник выбора.

Источники и дополнения
Официальный сайт Vim (здесь много документации и забавных FAQ о выходе из редактора).
EmacsWiki — огромная коллекция советов и руководств, от настройки e-mail до создания игр.
Richard Stallman и его истории о том, как зарождался Emacs (можно послушать интервью и подкасты).
Bram Moolenaar — автор Vim, в одном из выступлений рассказывал о философии редактора (особенно о режиме modal editing).
Заключение (aka :wq)
Vim vs. Emacs — это уникальная история о том, как два совершенно разных подхода к редактированию текста ведут «битву» уже больше 40 лет. У каждого есть своя магия, фанаты, мифы, легенды и целые пласты безумных фактов. Разумеется, победитель в этой битве всегда остаётся на усмотрение самого пользователя.
Но мы точно знаем, что, если вас однажды спросят, как выйти из Vim или зачем Emacs нужен встроенный Tetris, вы сможете ответить с улыбкой и, возможно, приобщить собеседника к одному из самых забавных (и в чём-то даже эпичных) противостояний в мире IT.
P.S. Если вы дочитали до конца, возможно вам будет интересен мой канал. В него я пишу про свою работу и разработку пет-проектов.
Комментарии (26)
leahch
11.02.2025 18:16Основной - emacs (clojure и все остальное) , по-быстрому - vim.
На свиндовс, когда в нем изредка бываю - notepad++.
И да, для явы - eclipse, а для питона и ардуинки. - vscode.
Так и живем :)
siberianlaika
11.02.2025 18:16Teledildonics mode как пример плагина в Emacs: https://youtu.be/D1sXuHnf_lo?si=uo3sNGG4EJdtz9-c -- в зависимости от количества скобок в текущем Lisp-выражении увеличивается амплитуда вибрации девайса, можно оценить все ли скобки закрыты. Глубже, еще глубже, aах, бесконечная рекурсия!
ednersky
11.02.2025 18:16Мем, который сопровождает редактор уже многие годы.
Бог знает сколько времени (больше десяти лет уж точно) нажатие Ctrl-c показывает справку: "Чтобы завершить работу программы, наберите :qa и нажмите клавишу <Enter>"
checkpoint
11.02.2025 18:16Ни разу за 30 лет не нажимал Ctrl-C в vi/vim. "Век живи - век учись" (с) Поручик. ;)
ednersky
11.02.2025 18:16По-моему это сделали, как впервые этот мем появился. И вот лет 10 назад я сам это впервые увидел (в таком же обсуждении мема прочитал).
А сейчас вспомнил и тоже нажал, чтоб надпись скопировать :)
siberianlaika
11.02.2025 18:16Вы открыли мне мир! :) Я как в прошлом веке научился таки вместо kill -9 использовать ":wq" (или ":wq!" для тяжелых случаев), так им и пользуюсь. Уже привычкой стало не трогать Ctl-C или Ctl-D в Vi :\
pecheny
11.02.2025 18:16Признайтесь, вы ведь не пользуетесь ни тем, ни другим, поэтому имеете весьма отдаленное представление о теме статьи. Вы не понимаете того, о чем пишете и просто пересказываете шутки, найденные на просторах сети, при этом потерявшие актуальность. Хоть бы atom на vscode заменили...
С одной стороны, статья – исторический экскурс и не предендует на практическую ценность, с другой – культивирует стереотипы и устаревшие знания, поэтому для новичка в теме будет скорее вредна, чем полезна.
SulNs
11.02.2025 18:16Как то после просмотра видосов от DistroTube замотивировался, решил стать крутым программистом и писать "hello world" на emacs. После трехдневной настройки emacs (скачивание чужих готовых сэтапов) и изучения понял что надо изучать программирование а не редактор. Может они и быстрее, продуктивнее и едят мало памяти но писать на pycharm или vscode для меня все таки удобнее. А на слабых машинах на работе (да тут все еще стоит Pentium 4 с 2мя гигами) стоит Sublime.
pecheny
11.02.2025 18:16После трехдневной настройки emacs
О, это ерунда. Emacs настраивают десятилетиями!..
Кроме шуток, кастомизабельность – это часть магии и философии emacs. Одновременно осваивать несколько сложных концепций за раз, в целом, идея не очень. Поэтому, изучая программирование лучше использовать знакомые (или с низким порогом входа) инструменты, а новые инструменты осваивать на понятной предметной области.
С точки зрения разработчика emacs вне конкуренции для всяких lisp-ов (в том числе, clojure), для использования концепции Literate programming, а так же как альтернатива Project Jupyter в виде org-babel.
Кроме этого он силен и славен экосистемой, построенной вокруг org-mode, позволяющей настроить свой собственный космолет по управлению личной базой знаний с интеграцией всего от блоггинга до проджект-менеджмента с хранением всего состояние в человеческом текстовом формате.
В качестве введения мне больше всего понравился цикл DoomCasts.
siberianlaika
11.02.2025 18:16Ага, это вероятно самый частый аргумент в спорах о выборе IDE: всё готовое против конструктора. Так то оно так, но когда десятилетия жизни уходят на работу с кодом и сопутствующие задачи, начинаешь ценить инструменты, которыми делаешь эту работу. И понимаешь, что проще вникнуть и настроить, чем всю жизнь делать какие-то действия неудобным и длинным путем, просто потому что авторы "мейнстримного" продукта не предусмотрели другого пути. В Emacs (как и полагаю в Vim) изначально пути нет вообще, его прокладываешь себе сам, но раз проложив бегаешь по нему очень быстро :) Поэтому, наш выбор -- только Linux, только Emacs! :)
Tony-Sol
11.02.2025 18:16Кажется, что в среде вимеров если раньше говоря vi подразумевали vim, так сейчас - говоря vim подразумевается neovim
checkpoint
11.02.2025 18:16Говоря vi подразумеваю только vi. vim, neovim, хреноvim, зачем всё это ? От текстового редактора требуется только текстовый редактор, как и на каждую простую задачу требуется простой и понятный тул. FreeBSD 13.3-RELEASE - операционная система в которой всё просто и понятно.
meritocratik
11.02.2025 18:16Неовим это буквально все функции нынешних иде в терминале с широкой кастомизацией, а на деле не жрёт и 10% от современных иде. а vi это так, где нибудь на облаке быстро файлик поправить, однако для меня важно чтоб все важные тулзы были под рукой, зачем мне бегать в другое окно в терминале, если могу очень много всего в одном?
В нвим и tab комплиты, плагины с гитом, автоформатирование при сохранении, линтеры, указ на ошибки при настроенном lsp, telescope, так зачем отказываться от ускорения рабочего процесса? Может это все можно как то в vi настроить, но чего ради если есть удобные форки вима с широкой поддержкой комьюнити, и даже внутри этих форков есть свои предлагаемые конфигурации-скелеты, куда просто докидывать и до настраивать плагины в .lua (мне удобен nvchad, например). Мне искренне интересно в чем смысл такой атомарности что редактор только редактирует, если можно ускорить скорость девелопмента создав современное легковесное иде внутри терминала? Вот я стараюсь по конвенциям писать, там их все не выучить быстро, а при автоформате сразу видно где и как что поменялось, и откладывается потихоньку в мозге, с vi я бы узнал конвенцию того или иного языка в той или иной ситуации?
siberianlaika
11.02.2025 18:16Чтобы осовременить архаично лайтовое содержание статьи добавлю актуальных ссылок, на ресурсы о современном GNU/Emacs, а не о том Emacs который воображают себе пользователи разных "современных IDE" :P К сожалению не помогу ссылками на Vim ибо практически им не пользуюсь, тут пусть местные вимеры подскажут.
И в любом случае вимеры все сгорят в адуВ общем вы поняли на какой я стороне.Учебные материалы от System Crafters: https://systemcrafters.net/guides/#gnu-emacs -- у них там всякое по подписке, но с сайта просто см. ссылки на уроки и подкасты на Youtube. Там же про всякое сопутствующее в Lisp-style, как дистрибутив GNU/Guix и прочую linux-альтернативщину :)
Living an awesome life by Sacha Chua https://sachachua.com/blog/ -- блог гиковой филлипинки, который она ведет уже два десятилетия.
https://www.reddit.com/r/emacs/ + https://www.reddit.com/r/emacsporn/ -- понятно было, что на реддите этого не могло не быть )
Популярные must have расширения, ради которых стоит всё это изучить:
Из трех компонентов выше можно построить как минимум бекап мозга с файловыми аттачами и версионированием :)
Рекомендуемое по личному опыту:
https://github.com/doomemacs/doomemacs (или для эстетов https://www.spacemacs.org/)
...вообще их конечно много больше, а часть из указанных имеют альтернативы, которые не хуже, даю ссылки для привлечения внимания, разобравшись и настроив эти плагины можно получить очень удобную в навигации и для редактирования среду.
Из последнего, чем начал пользоваться только в этом году: https://github.com/s-kostyaev/ellama + https://github.com/ahyatt/llm + llama.cpp (но тут можно и внешнего провайдера подключить) -- с некоторыми навыками программирования на Elisp можно достраивать под себя LLM-ассистентов под самые разные задачи (в том числе для написания нового кода на Elisp!). Не ощущал большой пользы от нейросетей в их чатовой инкарнации, пока не обнаружил интеграции с Emacs, просто теперь много всякой рутины делается локальной LLM на видеокарте, без утомительных промптов, поскольку один раз настроив их можно добавлять как новые команды в Emacs: как выделить кашу из текста и сделать markdown-таблицу, перевести на другой язык, поревьюить код. В готовом виде это же имеется в том же Jetbrains плагинами к разным "AI"-провайдерам, но в Emacs это удобно доделывать самому, сочетая в командах код Elisp с работой LLM под свои конкретные задачи. Ну опять жe emacs doctor получил более интеллектуальную форму :)
И напоследок, старая шутка про GNU/Emacs, которую почему-то упустили в статье: https://xkcd.com/378/
Если что это не шутка, just type "M-x butterfly" в редакторе.
shellenberg
11.02.2025 18:16Я мнил себя богом vim... пока не запустил r torrent. Помогите, как оттуда выйти пока я не выкачал весь интернет!!!
iamezhik
11.02.2025 18:16Все почему-то говорят о сабже исключительно в контексте IDE, хотя они такими и не являются by design.
qeeveex
11.02.2025 18:16Пробовал перейти на neovim (все еще по фану иногда пишу в нем). К сожалению мне не подошел из-за слабого навыка слепой печати и мелких недоработок.
J_o_k_e_R
11.02.2025 18:16А почему на скрине vim 9.0, который вышел в 2020+ году? А в подписи 1996 год?
siberianlaika
Про "тяжеловесность" Emacs борода тоже уходит в прошлый век, ну это уже прям неэтично так шутить, особенно когда смотришь сколько отъедают современные IDE и средства обработки текста :)
В общем и целом, как Vim с Emacs хоронили, так и будут пытаться хоронить, их это не задевает. Врядли они окажутся в топе по использованию, но у них достаточное обширное и что любопытно, пополняющееся новичками коммьюнити, чтобы успевать адаптироваться под меняющиеся условия мира. IDE приходят и уходят, Emacs с Vim остаются :) Для меня оба этих инструмента -- это примеры успешного и качественного софта.
pecheny
Нафаршированный emacs на win без WSL, к сожалению, намного медленнее любой IDE, с которой доводилось сталкиваться. Отдельная боль для пользователей win – magit.
budnikovsergey
да, под Windows и нефаршированный emacs медленный. Поэтому я пользуюсь linux и macos: для меня это основная причина выбора OS
siberianlaika
Не соглашусь, хотя на Windows не пробовал
но осуждаю:) Мой опыт это Linux и меньше Mac -- определенно, после других IDE, Emacs выглядит очень легковесно, скорость работы без нареканий даже на всяком убитом железе . Вообще же, в нём хватает старых кривых плагинов, которые что-то синхронно и медленно пытаются делать, но полезные и используемые массово плагины поддерживаются сообществом, эволюционируя в том числе по производительности. Последние лет пять много чего перевели на асинхронный режим, хотя в целом асинхронное исполненение кода в Emacs по-прежнему выглядит нестандартно. Тут бы движок бекенда радикально сменить, вероятно еще через десятки лет к этому придут :)У меня лично на одном железе установленные Emacs и Jetbrains Goland при работе по сути в одних задачах, сравнения практически всегда не в пользу последнего. Не говоря уже об удобстве, тот же Magit в Emacs -- против архачных всплывающих диалогов и иерархических меню в современных IDE. В Jetbrains хотя бы озаботились всякими вариантами поиска, но до Emacs, где на поисковых диалогах весь интерфейс, по-моему всё ещё далеко по удобству.
Однако, ковыряясь в коде на Elisp, нередко замечал всякое типа, "если Windows, то...", подозреваю неэффективность может прятаться в таких ветках, где даже внешние утилиты вызываются на разных системах разные. Всё же основное использование Emacs исторически на unix-системах.
А так, у меня к примеру установлено >300 пакетов, первый старт Emacs с ними ~2 секунды (но это дистрибутив Doom Emacs, где пакеты предкомпилируются после установки). Дальше новые окна запускаются как клиенты к emacs-server и всю рабочую сессию запуски практически мгновенные за доли секунды.