Emacs и напор являются двумя наиболее широко используемыми текстовыми редакторами на
Vim использует режимы редактирования - чаще всего командный режим и режим вставки. Vim стремится минимизировать количество нажатий клавиш, которые должен нажимать пользователь, потому что vi, на котором основан Vim, был разработан для использования на медленных терминалах.
Emacs использует клавиши-модификаторы для включения ярлыков, что часто включает одновременное нажатие нескольких клавиш для одной функции. Этот аспект Emacs часто подвергается критике.
Emacs легче изучать, так как он имеет более естественный интерфейс (для пользователей, знакомых с текстовыми редакторами на основе GUI). Поскольку Vim имеет разные режимы редактирования, новичкам будет немного сложнее учиться.
Энтузиасты Vim утверждают, что как только пользователь ознакомится с режимами редактирования и командами Vim, это позволит значительно повысить производительность и эффективность. Редактирование файлов в Vim обычно выполняется быстрее, чем в Emacs, благодаря целенаправленному интерфейсу Vim. Например, движением курсора можно управлять с помощью ЧАС, J, К, и L ключи в нормальный режим. Это означает, что руки пользователя не должны покидать позицию «домашнего ряда», что повышает эффективность, но обходится ценой добавления накладных расходов, поскольку для переключения между движением и редактированием текста требуется переключение режимов. В Emacs (с конфигурацией по умолчанию) пользователь перемещает курсор с помощью сочетаний клавиш Ctrl-B или Ctrl-F, что может замедлить работу начинающего пользователя, поскольку необходимо нажать две клавиши. Повышение производительности и эффективности в Emacs зависит от конфигурации среды редактирования, а не от самого редактора.
Vim легче Emacs и использует меньше памяти. Сторонники Vim критикуют потребление ресурсов в Emacs с насмешливым предположением, что Emacs означает «Восемьдесят мегабайт и постоянный обмен».
Однако с помощью gnuclient можно запустить один постоянный процесс Emacs, который может поддерживать несколько клиентов одновременно. Это ускоряет время запуска и уменьшает общее использование памяти, сокращая разрыв между Emacs и Vim.
Хотя и Vim, и Emacs поддерживают плагины, которые расширяют их функциональность, Emacs поддерживает гораздо больше настроек среды редактора. Это, пожалуй, самая важная особенность Emacs, и она ответственна за большую часть.
Emacs может быть расширен в elisp, тогда как Vim имеет собственный внутренний язык сценариев и поддерживает использование других языков программирования для разработки плагинов..
Emacs можно расширить на лету, переопределив встроенные функции elisp, введя новое определение в Emacs или загрузив файлы elisp. Группы связанных изменений называются «режимами» и могут быть легко настроены для автоматического использования для определенных типов файлов (буферов). Таким образом, легко определить режимы для разных языков программирования или сред, таких как «режим lisp» или «режим Ruby on Rails» или «режим PHP». Эти режимы могут напрямую изменять даже основные поведения Emacs, автоматически форматировать или раскрашивать текст и добавлять стандартный шаблон или «шаблонный» текст, такой как объявления функций и замыкания. Таким образом, программисты считают, что Emacs гораздо лучше настраивается под их конкретные требования, чем Vim. Тем не менее, некоторые программисты могут найти Vim, в конечном счете, более подходящим для их среды программирования из-за его одинаково настраиваемой и полностью модальной работы..
Vim также может быть расширен на лету с помощью командного режима. Командный режим позволяет устанавливать параметры конфигурации, определять функции и создавать макросы. Фактически, файлы конфигурации для Vim - это просто команды, которые можно вводить в командном режиме..
И Vim, и Emacs имеют графический пользовательский интерфейс. Практически все пункты меню в графическом интерфейсе для обоих редакторов - это просто способы обработки команды быстрого вызова или быстрой настройки. Графические интерфейсы для редакторов не предоставляют практически никаких дополнительных функций, помимо тех, которые доступны в CLI (интерфейс командной строки)
Emacs использует XDisplay или gtk2 для своего GUI. Vim может использовать многие другие библиотеки GUI, такие как gtk, gnome, gnome2, motif, athena и neXtaw, в дополнение к gtk2.