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-м](https://habrastorage.org/getpro/habr/upload_files/d5f/91c/1c2/d5f91c1c25de6905282a2e4ea4f058ac.png)
Фанатские войны (или религия текстовых редакторов)
Говорят, пользователи Vim видят лишь один реальный путь: команды, режимы (Normal, Insert, Visual) и магическую клавишу Esc
, которая определяет ритм работы.
Эмаксеры гордо заявляют: «Это не просто редактор, это операционная система, где можно сделать всё, что угодно — от чтения почты до игры в Tetris». Да, вы не ослышались, в Emacs есть встроенные игры.
Существует мем: «Emacs — это восемь мегабайт непрерывно расширяющегося SWAP-а» (Eight Megabytes And Constantly Swapping). Это, конечно, избыточное упоминание, ведь в реальности Emacs уже давно «съедает» больше памяти (теперь это могут быть сотни мегабайт!).
У Vim своя гордость: где ещё можно свести с ума новичка, когда он застревает в самом редакторе и не понимает, как из него выйти? «Помогите, я не могу выйти из Vim!» — стала классической шуткой.
![](https://habrastorage.org/getpro/habr/upload_files/dd8/b42/2b4/dd8b422b412e57194e0a9bca32057f23.png)
«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](https://habrastorage.org/getpro/habr/upload_files/4d6/a4c/0cf/4d6a4c0cfd364714a52bcb6945a8a69d.png)
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). Так что «война» давно перестала быть дуэлью, превратившись в праздник выбора.
![](https://habrastorage.org/getpro/habr/upload_files/34a/a92/a88/34aa92a880ff27d2e96a73f6e3747e22.png)
Источники и дополнения
Официальный сайт 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. Если вы дочитали до конца, возможно вам будет интересен мой канал. В него я пишу про свою работу и разработку пет-проектов.