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 в 1993-м
Vim в 1993-м

Фанатские войны (или религия текстовых редакторов)

Говорят, пользователи 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.

 Реальный вопрос на stackoverflow
Реальный вопрос на stackoverflow

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). Так что «война» давно перестала быть дуэлью, превратившись в праздник выбора.

Источники и дополнения

  1. Официальный сайт Vim (здесь много документации и забавных FAQ о выходе из редактора).

  2. EmacsWiki — огромная коллекция советов и руководств, от настройки e-mail до создания игр.

  3. Richard Stallman и его истории о том, как зарождался Emacs (можно послушать интервью и подкасты).

  4. Bram Moolenaar — автор Vim, в одном из выступлений рассказывал о философии редактора (особенно о режиме modal editing).

Заключение (aka :wq)

Vim vs. Emacs — это уникальная история о том, как два совершенно разных подхода к редактированию текста ведут «битву» уже больше 40 лет. У каждого есть своя магия, фанаты, мифы, легенды и целые пласты безумных фактов. Разумеется, победитель в этой битве всегда остаётся на усмотрение самого пользователя.

Но мы точно знаем, что, если вас однажды спросят, как выйти из Vim или зачем Emacs нужен встроенный Tetris, вы сможете ответить с улыбкой и, возможно, приобщить собеседника к одному из самых забавных (и в чём-то даже эпичных) противостояний в мире IT.

P.S. Если вы дочитали до конца, возможно вам будет интересен мой канал. В него я пишу про свою работу и разработку пет-проектов.

Комментарии (26)


  1. siberianlaika
    11.02.2025 18:16

    Про "тяжеловесность" Emacs борода тоже уходит в прошлый век, ну это уже прям неэтично так шутить, особенно когда смотришь сколько отъедают современные IDE и средства обработки текста :)

    В общем и целом, как Vim с Emacs хоронили, так и будут пытаться хоронить, их это не задевает. Врядли они окажутся в топе по использованию, но у них достаточное обширное и что любопытно, пополняющееся новичками коммьюнити, чтобы успевать адаптироваться под меняющиеся условия мира. IDE приходят и уходят, Emacs с Vim остаются :) Для меня оба этих инструмента -- это примеры успешного и качественного софта.


    1. pecheny
      11.02.2025 18:16

      ну это уже прям неэтично так шутить

      Нафаршированный emacs на win без WSL, к сожалению, намного медленнее любой IDE, с которой доводилось сталкиваться. Отдельная боль для пользователей win – magit.


      1. budnikovsergey
        11.02.2025 18:16

        да, под Windows и нефаршированный emacs медленный. Поэтому я пользуюсь linux и macos: для меня это основная причина выбора OS


      1. siberianlaika
        11.02.2025 18:16

        Не соглашусь, хотя на 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 и всю рабочую сессию запуски практически мгновенные за доли секунды.


  1. leremin
    11.02.2025 18:16

    JetBrains WebStore???


    1. RostislavDugin Автор
      11.02.2025 18:16

      WebStorm*, опечатался


  1. checkpoint
    11.02.2025 18:16

    Interview with a VIM Enthusiast

    Interview with an Emacs Enthusiast


  1. leahch
    11.02.2025 18:16

    Основной - emacs (clojure и все остальное) , по-быстрому - vim.

    На свиндовс, когда в нем изредка бываю - notepad++.

    И да, для явы - eclipse, а для питона и ардуинки. - vscode.

    Так и живем :)


  1. siberianlaika
    11.02.2025 18:16

    Teledildonics mode как пример плагина в Emacs: https://youtu.be/D1sXuHnf_lo?si=uo3sNGG4EJdtz9-c -- в зависимости от количества скобок в текущем Lisp-выражении увеличивается амплитуда вибрации девайса, можно оценить все ли скобки закрыты. Глубже, еще глубже, aах, бесконечная рекурсия!


  1. ednersky
    11.02.2025 18:16

    Мем, который сопровождает редактор уже многие годы.

    Бог знает сколько времени (больше десяти лет уж точно) нажатие Ctrl-c показывает справку: "Чтобы завершить работу программы, наберите :qa и нажмите клавишу <Enter>"


    1. checkpoint
      11.02.2025 18:16

      Ни разу за 30 лет не нажимал Ctrl-C в vi/vim. "Век живи - век учись" (с) Поручик. ;)


      1. ednersky
        11.02.2025 18:16

        По-моему это сделали, как впервые этот мем появился. И вот лет 10 назад я сам это впервые увидел (в таком же обсуждении мема прочитал).

        А сейчас вспомнил и тоже нажал, чтоб надпись скопировать :)


      1. siberianlaika
        11.02.2025 18:16

        Вы открыли мне мир! :) Я как в прошлом веке научился таки вместо kill -9 использовать ":wq" (или ":wq!" для тяжелых случаев), так им и пользуюсь. Уже привычкой стало не трогать Ctl-C или Ctl-D в Vi :\


  1. pecheny
    11.02.2025 18:16

    Признайтесь, вы ведь не пользуетесь ни тем, ни другим, поэтому имеете весьма отдаленное представление о теме статьи. Вы не понимаете того, о чем пишете и просто пересказываете шутки, найденные на просторах сети, при этом потерявшие актуальность. Хоть бы atom на vscode заменили...

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


    1. SulNs
      11.02.2025 18:16

      Как то после просмотра видосов от DistroTube замотивировался, решил стать крутым программистом и писать "hello world" на emacs. После трехдневной настройки emacs (скачивание чужих готовых сэтапов) и изучения понял что надо изучать программирование а не редактор. Может они и быстрее, продуктивнее и едят мало памяти но писать на pycharm или vscode для меня все таки удобнее. А на слабых машинах на работе (да тут все еще стоит Pentium 4 с 2мя гигами) стоит Sublime.


      1. pecheny
        11.02.2025 18:16

        После трехдневной настройки emacs

        О, это ерунда. Emacs настраивают десятилетиями!..
        Кроме шуток, кастомизабельность – это часть магии и философии emacs. Одновременно осваивать несколько сложных концепций за раз, в целом, идея не очень. Поэтому, изучая программирование лучше использовать знакомые (или с низким порогом входа) инструменты, а новые инструменты осваивать на понятной предметной области.
        С точки зрения разработчика emacs вне конкуренции для всяких lisp-ов (в том числе, clojure), для использования концепции Literate programming, а так же как альтернатива Project Jupyter в виде org-babel.
        Кроме этого он силен и славен экосистемой, построенной вокруг org-mode, позволяющей настроить свой собственный космолет по управлению личной базой знаний с интеграцией всего от блоггинга до проджект-менеджмента с хранением всего состояние в человеческом текстовом формате.
        В качестве введения мне больше всего понравился цикл DoomCasts.


      1. siberianlaika
        11.02.2025 18:16

        Ага, это вероятно самый частый аргумент в спорах о выборе IDE: всё готовое против конструктора. Так то оно так, но когда десятилетия жизни уходят на работу с кодом и сопутствующие задачи, начинаешь ценить инструменты, которыми делаешь эту работу. И понимаешь, что проще вникнуть и настроить, чем всю жизнь делать какие-то действия неудобным и длинным путем, просто потому что авторы "мейнстримного" продукта не предусмотрели другого пути. В Emacs (как и полагаю в Vim) изначально пути нет вообще, его прокладываешь себе сам, но раз проложив бегаешь по нему очень быстро :) Поэтому, наш выбор -- только Linux, только Emacs! :)


  1. Tony-Sol
    11.02.2025 18:16

    Кажется, что в среде вимеров если раньше говоря vi подразумевали vim, так сейчас - говоря vim подразумевается neovim


    1. checkpoint
      11.02.2025 18:16

      Говоря vi подразумеваю только vi. vim, neovim, хреноvim, зачем всё это ? От текстового редактора требуется только текстовый редактор, как и на каждую простую задачу требуется простой и понятный тул. FreeBSD 13.3-RELEASE - операционная система в которой всё просто и понятно.


      1. meritocratik
        11.02.2025 18:16

        Неовим это буквально все функции нынешних иде в терминале с широкой кастомизацией, а на деле не жрёт и 10% от современных иде. а vi это так, где нибудь на облаке быстро файлик поправить, однако для меня важно чтоб все важные тулзы были под рукой, зачем мне бегать в другое окно в терминале, если могу очень много всего в одном?

        В нвим и tab комплиты, плагины с гитом, автоформатирование при сохранении, линтеры, указ на ошибки при настроенном lsp, telescope, так зачем отказываться от ускорения рабочего процесса? Может это все можно как то в vi настроить, но чего ради если есть удобные форки вима с широкой поддержкой комьюнити, и даже внутри этих форков есть свои предлагаемые конфигурации-скелеты, куда просто докидывать и до настраивать плагины в .lua (мне удобен nvchad, например). Мне искренне интересно в чем смысл такой атомарности что редактор только редактирует, если можно ускорить скорость девелопмента создав современное легковесное иде внутри терминала? Вот я стараюсь по конвенциям писать, там их все не выучить быстро, а при автоформате сразу видно где и как что поменялось, и откладывается потихоньку в мозге, с vi я бы узнал конвенцию того или иного языка в той или иной ситуации?


  1. kibb
    11.02.2025 18:16

    nyan cat очевидно emacsовый mode.


  1. 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/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" в редакторе.


  1. shellenberg
    11.02.2025 18:16

    Я мнил себя богом vim... пока не запустил r torrent. Помогите, как оттуда выйти пока я не выкачал весь интернет!!!


  1. iamezhik
    11.02.2025 18:16

    Все почему-то говорят о сабже исключительно в контексте IDE, хотя они такими и не являются by design.


  1. qeeveex
    11.02.2025 18:16

    Пробовал перейти на neovim (все еще по фану иногда пишу в нем). К сожалению мне не подошел из-за слабого навыка слепой печати и мелких недоработок.


  1. J_o_k_e_R
    11.02.2025 18:16

    А почему на скрине vim 9.0, который вышел в 2020+ году? А в подписи 1996 год?