Vim и Emacs – два текстовых редактора для профессионалов Linux. Обе программы имеют особый синтаксис управления, специальные горячие клавиши и команды, но какой же из них лучше? С этим вопросом мы и попробуем разобраться в этой статье Emacs vs Vim. Поехали!
Скорость запуска
Сторонники Vim жалуются на долгое время запуска Emacs. И да, Emacs запускается медленно, но это не имеет большого значения. Вы запускаете программу только один раз за сеанс, затем все дополнительные процессы подключаются к главному процессу emacsclient. Таким образом, медленный запуск Emacs – это всего лишь миф.
Но здесь есть одно исключение, если вам нужно отредактировать файл на удаленной машине Emacs действительно будет запускаться намного медленнее того самого Vim. В некоторых ситуациях вы можете держать Emacs запущенным на удаленной машине, или редактировать удаленные файлы в локальном редакторе Emacs, но соединение будет разорвано, если порвется сессия ssh.
Что касается планшетов, то там, Vim загружается даже дольше чем Emacs (vim -u /dev/null vs. emacs -q)
Раздутость
Когда-то Emacs потреблял восемь мегабайт оперативной памяти и постоянно лез в подкачку. Сейчас же популярный браузер Google Chrome потребляет столько памяти для одной вкладки, сколько Emacs необходимо для открытия сотни файлов. И даже не будем упоминать Firefox. Прожорливость Emacs в двадцать первом веке это тоже миф.
Функциональность – это тоже не проблема. Если вы его используете, то должны знать что ее предостаточно. Возможности Emacs находятся в стороне, когда вы ими не пользуетесь, а документация поможет вам во всем разобраться.
Производительность
Это очень трудная тема. Приверженцы Vim утверждают, что вы можете делать почти все что нужно не выходя из главного окна. И это делает работу более эффективной. Сторонники Emacs говорят, что у него есть много команд, которые нечасто используются, но очень удобны, когда они нужны.
В этом плане Emacs, скорее всего, выиграет, если у вас нет проблем с набором текста. В Emacs вы можете настроить последовательности нажатий клавиш, например Ctrl + буква. Зато в Vim есть переключение режимов работы. Но вряд ли есть то, что Vim может сделать эффективнее чем Emacs, но в то же время верно и обратное. В этом сравнении, можно сказать, что редакторы равноценны.
Доступность
Если вы системный администратор и работаете с системами Unix, или пользователь встраиваемых устройств, таких как маршрутизаторы, смартфоны и т д, вы, скорее всего, знаете Vi, так как он доступен для большинства систем, будь то встроенный компьютер, сервер или любое другое устройство. Но для обычного пользователя это не имеет большого значения. Emacs доступен для большинства операционных систем настольных компьютеров и серверов, а поскольку здесь поддерживается удаленное редактирование, достаточно просто иметь его на своем компьютере.
Сложность обучения
На самом деле, это зависит от человека. У Vim действительно крутая кривая обучения, но ее можно немного уменьшить с помощью Gvim. На самом деле Vim не такой уж трудный для использования, немного тренировок и вы привыкните и будете чувствовать себя естественно в этом редакторе.
Emacs же имеет огромное количество расширений и позволяет выполнять задачи, которые лишь отдаленно связаны с текстовыми редакторами. Это, например, просмотр файловой системы, контроль версий файлов, чтение RSS каналов и так далее.
Если вы хотите полноценную среду, а не просто редактор – Emacs будет лучше чем Vim.
В целом Emacs обучится легче чем Vim, но вы все равно со временем будете снова и снова находить новые возможности в обоих редакторах.
Настраиваемость
Оба редактора программируемые, и у обоих есть огромное число плагинов. Но у Vim есть макроязык. А Emacs написанный на Lisp с некоторыми узкоспециализированными дополнениями.
Emacs явно побеждает, если вы хотите сделать то, что авторы явно не придумали.
Больше чем редактор
Vim – это всего лишь редактор. Emacs – не только редактор, ко всему прочему это IDE, файловый менеджер, эмулятор терминала, веб-браузер, почтовый клиент, клиент новостей и много чего еще. Хорошо это, или плохо – спорный вопрос. Но вы можете использовать Emacs в качестве простого редактора, без наворотов.
Среда разработки IDE
И Emacs, и Vim поддерживают большое количество языков программирования и других текстовых форматов. Помимо основных функций, таких как подсветка синтаксиса, автоматических отступов, оба редактора поддерживают расширение функций до IDE. Подключение документации, поиска, рефакторинга, интегрированного управления версиями, возможность запуска компиляции и перехода к первой ошибке.
Один демон Emacs явно лучше чем асинхронное взаимодействие процессов в Vim, когда вы, например, начинаете долгую компиляцию и хотите сделать еще что-то в том же редакторе. Emacs – победитель в этом разделе, в Vim есть только хаки для решения этой задачи.
Другие особенности
Многобайтовые символы
Оба редактора Vim и Emacs поддерживают многобайтовые символы, хотя в течение долгого времени международные символы были доступны только с помощью плагинов Emacs.
Расширяемость
Vim или Emacs, оба поддерживают огромное количество плагинов, которые повышают их функциональные возможности. Emacs может быть расширен за счет Elisp, а Vim имеет свой, собственный язык программирования – VimScript и поддерживает разработку плагинов на других языках.
Vim может быть расширен на лету с помощью режима командной строки. Командный режим позволяет использовать различные опции конфигурации для настройки функций редактора. На самом деле конфигурационные файлы VIm – это всего лишь команды, которые могут быть введены через командный режим.
Расширяемость – это главная фишка Emacs, он был написан на интерпретируемом языке программирования, а поэтому вы можете изменять даже работающий экземпляр программы и изменения будут применены, если они синтаксически правильны. Поэтому Emacs может быть расширен на лету простым редактированием кода или загрузкой Elisp файлов. Изменения могут быть собраны в группы, и настраиваться для автоматического использования для определенных типов файлов. Такие настройки называются режимами. Например, режим Ruby или режим Rails. Они могут полностью изменить поведение Emacs, раскрасить текст, добавить форматирование и т д.
Графический интерфейс
У обоих редакторов, будь то Emacs или Vim есть графический интерфейс. Графический интерфейс обеспечивает меню для обоих приложений. Но практически все пункты меню это альтернативный способ использования команд или комбинаций клавиш. Там нет ничего, что не может быть сделано с помощью прямых команд.
Emacs использует XDisplay и GTK2 для реализации графического интерфейса. Vim может применять множество других графических библиотек, таких как GTK, GTK2, Gnome, Gnome2, motif, athena, neXtaw, photon, carbon.
Следует отметить, что Emacs может рисовать различную графику и шрифты, а шрифт для Vim может быть только один и только фиксированной ширины.
Буферные вкладки
Оба Emacs vs Vim поддерживают буфера вкладок как в CLI, так и в графическом интерфейсе. Кроме того, Vim в доступен на большинстве серверов, в отличие от Emacs.
Лицензия
GNU Emacs распространяется под лицензией GNU GPL, и гораздо чаще ассоциируется с операционной системой GNU LInux, учитывая тот факт, что он является частью проекта GNU. Vim распространяется под лицензией charityware, хотя сам автор утверждает, что она совместима с GPL. Vim был изначально основан на Vi, разработанным Билом Джойем. Он используется многими пользователями Linux, поэтому может считаться родным для BSD, и других *nix систем.
Обзор различий
Emacs
Emacs был написан на Lisp, а это лучший язык для создания редактора. Вы можете реализовать в нем все что захотите с помощью Elisp.
Плюсы: Расширяемый, более мощный, чем любой другой редактор, интегрируется с большинством инструментов для разработки открытого ПО
Минусы: Сомнительная эргономика, Elisp не так просто изучить
- Этот редактор можно использовать как в Linux, так и в Windows-системах.
- Здесь есть отличное средство для создания макросов, чтобы автоматизировать операции редактирования. Сценарии Vim не настолько сложны как Elisp, но в то же время вы можете писать их на Python, Tcl, Perl и других языках.
- Vim занимает меньше места, чем Emacs
- В Vim отличная онлайн-документация
- В Vim используется очень интересная концепция пользовательского интерфейса, с командным и текстовым режимом.
Плюсы: Удобные макросы, расширяемость, стандартный во многих дистрибутивах, лучшая эргономика
Минусы: интерфейс непривычный для пользователей Windows.