Различия между Emacs и Vim - PullRequest
       66

Различия между Emacs и Vim

647 голосов
/ 16 сентября 2009

Не вдаваясь в религиозные споры о том, почему одно лучше другого, каковы практические различия между Emacs и Vim? Я хочу изучать одно или другое, но я понимаю, что кривая обучения для каждого высока, и я не могу решить. Я никогда не использовал редактор такого типа (я всегда использовал IDE), поэтому все, что помогает новичку, является плюсом.


Перед началом пламенной войны: я не спрашиваю, что лучше, я спрашиваю различия между ними. Я бы хотел объектив сравнение.

Ответы [ 29 ]

457 голосов
/ 16 сентября 2009

(текст ниже - мое мнение, его не следует воспринимать как факт или оскорбление)

Ожидается, что в Emacs он будет открыт 24 часа в сутки, 7 дней в неделю и внутри программы, практически все, что вы делаете, может быть сделано оттуда. Вы пишете свои собственные расширения, используете их для ведения заметок, организации, игр, программирования, доступа к оболочке, доступа к файлам, прослушивания музыки, просмотра веб-страниц. Потребуются недели и недели, пока вы будете счастливы с этим, а затем вы будете постоянно учиться новому. Вы будете раздражены, когда у вас нет доступа к нему и постоянно меняете свой конфиг. Вы не сможете легко использовать версии Emacs других людей, и они не будут просто установлены. Он использует Лисп, и это здорово. Вы можете превратить его во что угодно. (что угодно, вообще)

С Vim он почти всегда предустановлен. Это быстро. Вы открываете файл, делаете быстрое редактирование и затем выходите. Вы можете работать с базовой настройкой, если вы находитесь на чужой машине. Это не совсем так редактируемо, но все же намного лучше, чем большинство текстовых редакторов. Он распознает, что большую часть времени вы читаете / редактируете, а не печатаете, и ускоряет эту часть. Вы не страдаете от Emacs Pinkie . Это не так бесит. Это легче учиться.

Несмотря на то, что я использую Emacs каждый день каждый день (и мне это нравится), если вы не собираетесь тратить много времени на выбранную вами программу, я выберу vim

129 голосов
/ 16 сентября 2009

Vim не оболочка. И это плохо связывается с подпроцессами. Это почти по замыслу, тогда как в Emacs эти элементы включены по замыслу. Это означает, что некоторые вещи, такие как встраивание отладчика или интерпретатора (в результате чего-то вроде IDE), трудны в Vim.

Кроме того, ярлыки Emacs в основном доступны через модификаторы, и, очевидно, интерфейс Vim является модальным, предоставляя доступ к абсурдному количеству прямых клавиш для манипуляции.

Раньше Emacs был единственным редактором, который был программируемым, и, хотя Vim имеет много странных уровней в своей программируемости, с добавлением привязок Python и Ruby (и многое другое, я забыл), Vim также программируется в большинстве случаев вы заботитесь о них.

Я использую Vim, и я вполне доволен этим.

102 голосов
/ 16 сентября 2009

Vim:

  • лучше как простой редактор (для простых задач требуется меньше ключей)
  • более активное сообщество сценаристов - внутренний язык: vimscript
  • один центральный репозиторий скриптов, плагинов, цветовых схем, ...
  • также расширяемый в python, ruby ​​
  • можно сделать переносимым (с этим у emacs есть некоторые проблемы)

Emacs:

  • немодально по умолчанию (большинство современных редакторов выбрали этот подход). Хотя есть злой режим , который имитирует поведение vim.
  • более мощный язык для его расширения (elisp - полноценный язык, и в emacs вы можете практически все переопределить; в vim вы не можете переопределить встроенные функции редактора. С другой стороны, vimscript относительно похож на сегодняшнюю динамику языки, в то время как elisp почти ничего не напоминает)
  • более расширяемый
  • отличная поддержка инструментов GNU (куча их)

Лично я предпочитаю vim - он маленький, делает то, что должен, и когда я желаю полноценной IDE, я открываю VS. Подход Emacs быть редактором, который хочет быть IDE (или, я бы сказал, ОС), но не совсем, ИМХО, устарел. В прежние времена наличие почтового клиента, ftp-клиента, тетриса ... чего-то еще в одном пакете (emacs) имело некоторый смысл ... в настоящее время этого больше нет.

Однако оба являются темой религиозных дискуссий среди программистов и пользователей сообщества суперпользователей, и в этом отношении оба отлично подходят для начала пламенных войн, если вступают в контакт (в одном предложении / вопросе).

47 голосов
/ 16 сентября 2009

Если вы ищете объективный анализ обоих редакторов, посмотрите на их происхождение и философию их соответствующих проектов. Подумайте, какой из них вам больше подходит, и выучите его (и выучите его, и выучите его, потому что прежде чем вы обнаружите его истинную полезность по сравнению с любой IDE, требуется время). Введение в редактирование отображения с помощью Vi было написано Биллом Джоем и Марком Хортоном, и он объясняет, почему он выбирает модальный дизайн и обоснование для различных нажатий клавиш (это помогает мне помнить, что CTRL-W + W (переключит на следующий W indow, и это будет то же самое для CTRL W + CTRL W, на тот случай, если вы удерживали клавишу CTRL в течение более длительного времени.

Вот ссылка на Временная шкала Emacs и ссылка на статью Multics Emacs. Вот документ RMS по Emacs , где я вижу упор на программируемый текстовый редактор (даже в 1981 году и раньше).

Я не читал газеты Emacs, но пару раз читал газету Билла Джоя. Оба старые, но все же вы получите философию, и вы можете использовать текущий инструмент (vim 7.x или emacs 25?)

Редактировать: Я забыл упомянуть, что требуется терпение и воображение, чтобы прочитать обе эти статьи, поскольку это уносит вас назад во времени при чтении. Но оно того стоит.

43 голосов
/ 16 сентября 2009
  1. Vim всегда запускался быстрее, чем Emacs. Я говорю о том, что на любой машине установка Vim из коробки начнется быстрее, чем установка Emacs из коробки. И я склонен думать, что после небольшого количества настроек Vim по-прежнему будет запускаться быстрее, чем Emacs.

  2. После этого другим практическим отличием были моды Emacs. Они значительно упрощают вашу жизнь при редактировании XML, C / C ++ / Java / чего угодно, LaTeX и самых популярных языков, о которых вы только можете подумать. Они заставляют вас хотеть держать редактор открытым для долгих сессий и работы.

В общем, я скажу, что Vim привлекает вас к коротким, быстрым задачам редактирования; в то время как Emacs предлагает вам погрузиться в долгие сессии.

38 голосов
/ 16 сентября 2009

VI всегда доступен и будет работать в наиболее урезанном однопользовательском режиме, с испорченной графикой, без клавиатуры, с медленной связью - поэтому стоит знать, как редактировать в нем простые файлы только для задач sysadmin.

Emacs - это полный пользовательский интерфейс в редакторе. Идея состоит в том, что вы запускаете Emacs при запуске машины и никогда не покидаете ее. Возможно присутствие тысяч сессий.

Стоит ли изучать возможности Emacs по сравнению с использованием графического редактора / IDE и использованием чего-то вроде python / awk / etc для дополнительных задач - решать только вам.

24 голосов
/ 16 сентября 2009

Я полноценный фанат Emacs, но я знал VI задолго до того, как знал Emacs. Тем не менее, я заставляю всех своих людей изучать VI, потому что он всегда доступен, везде. Не могу ошибиться ни с одним из них.

13 голосов
/ 16 сентября 2009

Я начал с vi, пошел в emacs, затем в vim. Я думал попробовать Emacs, чтобы увидеть, что изменилось за последние пять лет. (Говоря об IDE, я некоторое время находился в затмении, но я предпочитаю окно терминала, соединяющее мой mac с моим (мужем) linux box).

В последнее время меня беспокоят вещи с вырезками и вставками. Вырезать и вставлять в Vim нужно больше шагов, чем в Emacs, IIRC. И вставка из, скажем, браузера в окно терминала раздражает, если вы не делаете что-то необычное, что мне не хочется делать, поэтому я смирился со странным отступом. Я думаю, редактирование нескольких файлов в Emacs было проще. По крайней мере, переходите от одного файла к другому, если они оба находятся на экране.

Я не играл с необычными функциями ни vi, ни emacs, так как мне просто нравится заниматься программированием. Все, что мне нужно, это красивые цвета и правильное преобразование табуляции в пространство (особенно важно для Python).

Я думаю, все зависит от того, хотите ли вы использовать :wq или Ctrl-x Ctrl-s (IIRC) для сохранения файла, если вас не интересуют причудливые вещи.

@ mgb было правильно. Я был в минимуме Linux, чтобы исправить что-то месяц или два назад в дистрибутиве Debian. vi был единственным доступным редактором.

13 голосов
/ 17 августа 2010

Кажется, что ответ уже выбран, но большая разница для меня всегда была модальной против немодальной. Vim является модальным, что означает, что он выполняет оптимизации на основе определенного набора режимов использования. По крайней мере, так я всегда смотрел на это. Это делает использование Vim другим, потому что вместо рабочей области, в которой вы вводите код, вы действительно указываете среде действовать на текст. Вот почему люди говорят, что с Vim вы действительно изучаете язык. : Wq и: s / foo / bar являются частью оболочки, похожей на среду, которая редактирует и читает текст.

Emacs, с другой стороны, намного ближе к большинству редакторов / текстовых процессоров / и т. Д. ты видишь сегодня. У вас есть рабочее пространство с высоко программируемым интерфейсом. Вот почему вы видите такие вещи, как электронная почта, irc, оболочки и т. Д. Как программисту легко представить себе слова: «Возьми номер строки, на которой я сейчас, и сделай что-нибудь с информацией». Желание покинуть редактор становится меньше, потому что вместо того, чтобы выходить, открывать какое-то другое приложение / язык и делать что-то с текстом, у вас есть Emacs, где вы можете делать эти вещи в рамках вашего редактора.

Обе идеи не обязательно противоречат друг другу, просто они раскрывают два разных фокуса. Лично я использую Emacs, но я видел людей, которые действительно хорошо знают Vim и могут честно сказать, что не имеет значения, какой вы выберете. Сначала я попробовал Vim, но Emacs продолжал придерживаться меня. Это правда, что независимо от того, что вы выберете, вы должны быть хотя бы в некоторой степени опытными в Vim, поскольку он действительно всегда доступен.

10 голосов
/ 25 октября 2013

Многое было сказано об обоих редакторах, но я просто хочу добавить 5 пенсов. Оба редактора великолепны, и вы не ошибетесь ни с одним из них.

Я уже 15 лет как пользователь vi / vim. Я несколько раз пытался конвертировать в emacs, но каждый раз обнаруживал, что vim действительно может сделать недостающую вещь из коробки без необходимости писать расширение для lisp или устанавливать что-либо.

Для меня главное отличие редакторов в том, что vim заставляет вас использовать среду / ОС, в то время как emacs пытается инкапсулировать ее или заменить. Например, вы можете добавить дату в тексте как: r! Date в vim, или календарь с помощью: r! Cal 1 2014, или даже заменить содержимое вашего буфера шестнадцатеричной версией содержимого. Например. :%! xxd, отредактируйте hex, а затем вернитесь с:%! xxd -r и многими другими, например, встроенными grep, sed и т. д.

Другим примером является использование с jq и gron. Например. вставьте json blob в редактор и запустите для преобразования:

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

OR

:%!jq .path.to.stuff

Каждая из вышеперечисленных команд может быть запущена отдельно через :%!<command>, где % означает весь документ, но также может выполняться при выделении, выбранных строках и т. Д. Здесь gron output может использоваться как jq путь.

Вы также получаете функциональность пакетного редактирования EX, например. Замена определенных слов, переформатирование кода, преобразование символов новой строки dos-> unix, запуск макроса, скажем, для 100 файлов одновременно. Это легко сделать с экс. Я не уверен, что в emacs есть что-то похожее.

Другими словами, IMHO vim подходит ближе к философии Unix. Как правило, он проще и меньше, но если вы знаете свою ОС и инструменты, вам, скорее всего, не понадобится больше, чем она может предложить (VIM). Я никогда не делаю.

Кроме того, vi является стандартом defacto в любой системе Unix / Linux, поэтому учитесь использовать 2 инструмента, которые делают то же самое. Конечно, некоторые системы предлагают мг или что-то подобное, но определенно не все из них. Unix + Vi <3. </p>

Ну, только мои 5 пенсов.

...