Каковы плюсы и минусы Vim и Emacs?

Как бы вы сравнили этих редакторов? Каковы плюсы и минусы каждого?

[ note ] На это не должны отвечать те, кто «ненавидит одного и любит другого» или тех, кто не использовал их обоих.

360 голосов | спросил 6 revs, 5 users 85%
John Berryman
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

15 ответов


410

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

  • Доступно везде? Если вы профессиональный системный администратор, который работает с Unix-системами или мощный пользователь на встроенных устройствах (маршрутизаторы, смартфоны с Busybox, â € |), вы нужно знать vi (не Vim), потому что он доступен во всех Unix-системах и большинстве Unix-подобных систем, будь то настольный, серверный или встроенный. Для обычного пользователя этот аргумент не имеет значения: Emacs легко доступен для каждой настольной /серверной ОС, и поскольку он поддерживает удаленное редактирование, этого достаточно, чтобы его все равно на вашем настольном компьютере.

  • Раздутый? Emacs когда-то стоял с юмором в отношении «мега мегабайт и постоянная замена». Прямо сейчас, на моей машине, Google Chrome требует примерно столько же ОЗУ на каждую вкладку, как Emacs для 100 открытых файлов, и я даже не буду упоминать Firefox. В 21 веке Emacs bloat - всего лишь миф.

    Функция bloat также не является проблемой. Если вы не используете его, вам не обязательно знать, что он есть. Функции Emacs не работают, когда вы их не используете, и документация очень хорошо организована.

  • Время запуска : Vi (m) сторонники жалуются на время запуска Emacs. Да, Emacs медленно запускается, но это не имеет большого значения: вы запускаете Emacs один раз за сеанс, а затем подключаетесь к запущенному процессу с помощью emacsclient. Поэтому медленный запуск Emacs - это в основном миф.

    Есть одно исключение, которое происходит при входе на удаленный компьютер и редактировании там файла. Запуск удаленного Emacs (обычно) медленнее, чем запуск удаленного Vim. В некоторых ситуациях вы можете хранить Emacs внутри экрана. Вы также можете редактировать удаленные файлы из Emacs, но он прерывает поток, если вы находитесь в сеансе ssh в терминале. (Так как XEmacs 21 или GNU Emacs 23, вы можете открыть окно Emacs из исполняемого X-экземпляра внутри терминала.)

    Поворачивая таблицы, я заметил, что Vim занимает значительно больше времени, чем Emacs (vim -u /dev/null vs. emacs -q). По общему признанию, это было на странной платформе (Cygwin).

  • Начальная кривая обучения: . Это зависит от человека. Граф Майкл Мрозек заставил меня усмехнуться. Серьезно, я согласен с тем, что кривая обучения Vim начинается крутой, крутой, чем любой другой редактор, хотя это можно уменьшить с помощью gvim.

    Так как я развеял пару мифов Emacs, позвольте мне развеять миф vi: модальный редактор не является трудным или болезненным в использовании. Это требует немного привычки, но через некоторое время это кажется очень естественным. Если бы я перепроектировал vi (m), я бы определенно сохранил режимы.

  • Асимптотическая кривая обучения: У Vim и Emacs есть много возможностей, и вы будете продолжать открывать новые после нескольких лет использования.

  • Производительность . Это чрезвычайно трудная тема. Сторонники vi (m) утверждают, что вы можете делать почти все, не выходя из домашней строки, и это делает вас более эффективными, когда вам это нужно больше всего. Сторонники Emacs возражают, что Emacs имеет множество команд, которые не часто используются, поэтому не гарантируйте привязку ключей, но они удобны, когда вам это нужно ( циклом чтения-eval-печати - Emacs действительно сияет на этом, у Vim есть только неуклюжие хаки. Тем не менее, новая вилка vim, Neovim доказала, что она исправила это и внедрила другие различные исправления ошибок, а не реализовано на складе vim.

ответил schily 2 FebruaryEurope/MoscowbTue, 02 Feb 2016 17:24:24 +0300000000pmTue, 02 Feb 2016 17:24:24 +030016 2016, 17:24:24
260

Я опубликую то, что, по моему мнению, является основным преимуществом каждого из них:


У Emacs есть значительно больше расширений, позволяющих выполнять задачи, которые связаны только с текстовым редактором, например, просмотр файловой системы или взаимодействие с контролем версий, а также расширения, которые никоим образом не связаны с текстовым редактором, например, чтение RSS-каналов. Если вы хотите создать среду вместо текстового редактора, Emacs будет лучше, чем Vim. Я также думаю, что Emacs намного легче учиться, несмотря на то, что некоторые из вас могли бы поверить:

 Редактирование кривой обучения комикс

В частности, я думаю, что начинающий пользователь Emacs будет быстрее, чем начинающий пользователь Vim


С другой стороны, Вим неоспоримо быстрее. Похоже, что это основная часть аргумента, но, на мой взгляд, нет никакого соревнования; Я считаю себя свободным пользователем Emacs, и я не согласен с тем, что я знаю пары, которые имеют равные знания Vim. Проблема в том, что количество людей, обладающих достаточным мастерством Vim, чтобы быть таким быстрым, невероятно мало (из 30 человек, с которыми я регулярно разговариваю с Vim, я думаю, что только один из них исключительно хорош в этом). Между увеличением возможного и большим увеличением фактическое достигается большой разрыв; Пользователи Emacs будут почти такими же быстрыми, как 99% пользователей Vim, и (как я сказал в разделе Emacs), начиная с пользователей Emacs, вероятно, будет быстрее, чем начинающих пользователей Vim.

ответил Michael Mrozek 22 AM00000080000002531 2010, 08:51:25
78

В каждой системе unix (или почти) имеется vi, но вы не можете сказать об этом в любом другом редакторе. Это причина №1, imo, чтобы узнать и ознакомиться с vi (обратите внимание, что «vi» не «vim»). Я никогда не видел, чтобы Emacs был доступен по умолчанию.

Я не говорю, что не используйте Emacs, или это единственная причина для использования Vim, но когда вы хотите использовать Unix-системы, которые не являются вашими ... vi является частью универсального языка.

ответил xenoterracide 22 AM000000110000001731 2010, 11:05:17
23

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

Emacs выделяется мне ближе (хотя и не соответствует) стандартам ISO /IEC для удобства использования и согласованности для пользовательских интерфейсов и, следовательно, не играет столько трюков с вашими «инстинктами» об этом vim делает. Время жизни инстинктов, которые вы разработали для работы с другими программами, не будет работать против вас.

Vim - совершенно другая модель, и во многих отношениях она превосходит сама по себе, поскольку полагается гораздо меньше на последовательности Cntrl /Alt, а вместо этого просто на своих режимах, позволяя вам держать свои вещи в доме строка и ввод текста быстрее. Но vim практически уникален, и если вы не установите очень необычное сопутствующее программное обеспечение (например, Vimperator, Jumanji /Zathura и т. Д.), Инстинкты, которые вы разрабатываете, работая с vim, не перейдут к другим программам и наоборот. Тем не менее, я сам обосновался на виме. Вам нужно рано или поздно обосноваться, лучше или хуже, так как трудно освоить оба.

ответил frabjous 22 AM00000070000003331 2010, 07:05:33
21

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

Многие люди бегут из Emacs из-за большой зависимости от битков бит , но это довольно глупая причина для меня , Реальная власть, которую Emacs имеет над Vim, - это настраиваемость, и с мощью Viper и т. Д. Это действительно не проблема. Конечно, Vim-Script предоставляет собственный уровень настройки, и если, скажем, ваш любимый язык программирования не был снабжен соответствующим синтаксическим маркером, вы наверняка могли бы его приготовить, но Emacs, в конечном счете, является самообслуживающей lisp-машиной, а в конец, который вы можете сделать много, гораздо более возиться с ним. Там просто нет таких инструментов, как gnus или org -mode в Vim, чтобы назвать несколько. Вкратце, Emacs - это не просто редактор, это практически проклятая операционная система.

Для управления текстом я бы сказал, что они точно соответствуют.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
18

Я положу свой 0.02 доллара, поскольку я потратил немало лет на использование emacs и XEmacs, а затем перешел на vim. Справедливости ради, я фактически использовал vi совсем немного в 1990-1992 годах, поэтому я был знаком с его пользовательским интерфейсом.

Emacs

  • Emacs описывается как система lisp, которая просто использовалась для написания редактора, и в этом есть доля правды. Вы можете реализовать практически все, что захотите, в elisp, если вы хотите потратить свое время, чтобы понять окружающую среду. Я не могу сказать, что я когда-либо знал об этом так хорошо, но я делал фригикс. Emacs и Xemacs не полностью совместимы на этом уровне, поэтому сторонние скрипты могут работать на одном, а не на другом.

  • Было замечено, что RMS и некоторые другие выдающиеся хакеры Emacs должны были уйти от программирования из-за проблем с OOS, где Билл Джой, Брэм Муленаар и другие другие светильники vi все еще на нем. Emacs тяжело на ваших мизинных пальцах.

  • Emacs - это гораздо более католическая система, чем vi, и рассматривается как канонический пример охвата программного обеспечения . Наряду с Netscape это один из вкладов jwz в доказательство этого закона.

Одна уникальная вещь, которую я делал с xemacs однажды, заключалась в том, чтобы она работала на машине и открывала x-сессию на xterminal (фактически старом пересмотренном Sun 3/60) в другой комнате против того же буфера на одном и том же запущенном экземпляре .

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

Минусы: Сомнительная эргономика, элипс нелегко изучить.

Vim

Disclamer - я перешел от использования emacs к vim около 10 лет назад, и я обычно использую vim для систем на базе Windows и Unix /Linux.

  • Vi и его потомки имеют очень хорошее средство макроса клавиатуры для автоматизации задач редактирования. Сценарий в vim не такой сложный, как elisp, но вы можете построить его с поддержкой Python, Tcl, Perl и, возможно, некоторых других систем. Я только изредка писал сценарии (вне файлов .vimrc) для vim.

  • Vim имеет меньший размер, чем emacs, но в наши дни это не очень важно.

  • Документация Vim и онлайн-справки достаточно хороши. Emacs имеет неплохую онлайн-документацию, но я не думаю, что она такая же всеобъемлющая, как и vim.

  • Vim наследует причудливый модальный пользовательский интерфейс vi, но теперь он может вести себя как модный редактор, так как вы можете перемещаться в режиме вставки. В Windows он может вести себя аналогично приложению Windows.

Плюсы: Хорошее средство макроса клавиатуры, неплохо расширяемость и сценарии, но не так хороши, как emacs. Редакторы Vim или vi являются стандартными для большинства, если не для всех Linux-дистрибутивов unix или общего назначения. Возможно лучшая эргономика.

Минусы: Модальный интерфейс пользователя кажется странным для людей, привыкших к пользовательским интерфейсам Windows. Меньше проблемы с vim в эти дни.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
15

Обычно я использую Vim, но они оба замечательные редакторы.

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

Emacs, вероятно, более доступен. Это немощно, и вы не будете забивать себя, нажав клавишу блокировки колпачков. Идея управления редактором путем ввода букв с помощью управляющего ключа не должна быть слишком чуждой для современных опытных пользователей, хотя фактические клавиши для работы будут казаться дикими и произвольными для обычного пользователя Windows /Mac OS X. Опять же, версии, которые позволяют вам использовать мышь, в конце концов вам мало пользы.

Оба требуют определенного уровня компетентности для эффективного использования. В отличие от, скажем, «Блокнота», вы не можете просто сидеть и редактировать.

Оба настраиваются, хотя для моих писем с деньгами, написанных в том же Lisp, написанный редактор делает более приятный опыт. (Emacs, как обычно распределенный, на самом деле не является редактором. Это среда Lisp, предназначенная для обработки текста, с большим количеством предварительно написанного программного обеспечения, включая редактор. Следовательно, шутка «Emacs» делает достойную оболочку, но она может использовать лучший редактор. ")

Я обычно использую Vim, потому что после обширной тренировки мне становится легче. Это может быть связано с преимуществами системы режимов, где огромное количество команд доступно с помощью одного пальца рядом с домашними рядами или синдромом детской утки, который очень сильно подходит для редакторов: как только вы узнаете хороший, вы обычно придерживаетесь к нему.

Вы тоже не ошибетесь.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
9

Основная причина, по которой я не использую vi /vim, заключается в том, что она модальная. Основная причина, по которой я использую vi, в том, что она доступна почти везде.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
9

Мне кажется, что комментарий «vim modal» выше неверен. У Vim есть команды. Вы можете сделать «11aNow - время для всех хороших мужчин ..», и в итоге вы получите 11 идентичных строк текста в вашем файле. Это команда, а не режим. Но на самом деле очень большая разница в командах Vim против команд Emacs. Я не совсем уверен, что могу описать это, но Эрик Фишер включил редактирование строки в стиле Emacs в драйвере TTY еще 10 лет назад и опубликовал опубликованную статью:

http://www.usenix.org/event/usenix99/full_papers/fischer/fischer .pdf

Он обнаружил, что редактирование строк в стиле Emacs принципиально отличается от стиля vi.

Итак, у Emacs есть преимущество в том, что многие другие вещи (bash, gnuplot, zsh, ksh, некоторые другие, с которыми я не могу придумать), в конечном итоге реализуют редактирование строк в стиле Emacs.

Я должен отметить, что я лично использую Vim все время. Я всего лишь случайный пользователь Emacs.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
9

Поскольку он не был явно указан, добавлю, что нет лучшей среды программирования (Lisp в поле, SLIME и т. д.), чем слегка измененный дистрибутив Emacs. Все мои потребности в программировании (99%) позаботятся из Vim, но для всех этих библиотек Lisp и подпрограмм, которые я пишу, мне нужно запустить Emacs, чтобы сделать что-нибудь продуктивное.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
8

Я использую Vim /gVim.

Я использовал Emacs, но я обнаружил, что gVim обычно работает быстрее на более медленных машинах, плюс из-за его требования к POSIX vi доступен почти везде.

При использовании Vim или gVim я много использую мышь, я думаю, что это здорово.

Я начал использовать Emacs, потому что это было проще для начинающего пользователя. Я почему-то обнаружил, что использование nano было довольно склонным к ошибкам, и в какой-то момент я понял, что мне гораздо удобнее использовать vi.

Прямо сейчас, это смесь. Я часто использую Eclipse и gedit. Vim, однако, по-прежнему остается моим любимым и наиболее часто используемым редактором.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
7

Я использую как gVim, так и Emacs достаточно хорошо, чтобы быть продуктивными, хотя я не знаю ни того, ни другого. Одно можно сказать с уверенностью, что Vim и gVim работают быстрее на моем ноутбуке Windows 7 (который я должен использовать на работе). Emacs, в окне Windows, имеет странную привычку «приостанавливаться» на минутку и становится невосприимчивым, даже продолжая принимать ввод с клавиатуры, прежде чем выплевывать все, что накапливается в буфере клавиатуры в спешке. Этого не происходит в Mac OS или Linux. Тем не менее, я часто использую Vim или gVim на всех платформах, поэтому мне не нужно останавливаться и думать о том, какой редактор я использую и настраиваю. Тем не менее, в чистой среде * nix, я, вероятно, останусь с Emacs, потому что я нахожу немодальное редактирование немного более естественным.

Итог: на мой взгляд, оба редактора достаточно мощны, чтобы обрабатывать любые потребности в редактировании текста. Выбор должен основываться на практических соображениях (например, особенностях реализации платформы) и рабочем стиле.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
3

Основное различие между Emacs и Vim эргономично. Существует синдром кистевого туннеля, CTS, как вы знаете. Emacs очень «опасен», если у вас есть CTS и провоцирует CTS. Вим - нет, вы можете прочитать об этой разнице во многих местах. Например, в Vim вы можете редактировать текст только одним пальцем. В Emacs вы не можете:)

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
-2

Я использую vi /nvi (NOT vim), потому что он прост и ненавязчив.

vim любит звуковые сигналы настолько сильно, что их сложнее и немного незаметно для отключения. Я должен был физически удалите внутренний динамик ПК, прежде чем нашел, что похоронили-ref о том, как это сделать:)

set vb t_vb=

Кроме того, я не использую синтаксическую раскраску, серый для меня - самый красивый.

И, может быть, я слишком глуп, чтобы понять, что запутанный с несколькими клавишами код emacs единственная комбинация из трех клавиш, которую я помню, - CTRL-ALT-DEL.

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28
-2

«Каковы плюсы и минусы Vim и Emacs?» - ha!

В основном я оставлю профи другим.

Недостатки обоих из них в том, что они и старая школа. Я использовал, вероятно, 50 разных редакторов на протяжении многих лет от редакторов Basic line, до супер быстрых редакторов с кодировкой (VEDIT для одного), для графических редакторов GUI, а некоторые лучше других. Я даже написал свой собственный специальный редактор под названием ForthStar и адаптировал его для редактирования дерева листьев btrieve с несколькими индексами для мощного поиска, например, чтобы мгновенно найти последние листья, которые я только что редактировал, или быстро найти компоненты кода или листы родителей или детей.

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

Да Emacs может многое сделать, но он замедляется lisp, красивым и в настоящее время в значительной степени устаревшим языком.

Оба застряли в сложных раскладках клавиатуры. Emacs может немного подкорректировать пользователя, как минимум, признав, что есть ключ Alt, а не античный Meta. И как WordStar признают, что держать C-A C-B прямо из C-A B, когда скорость ввода не стоит различия. Лучше просто просто иметь тот, который уволен либо с помощью комбинации клавиш. Да, вы можете изменить привязки клавиш, но потом какой беспорядок у вас есть позже.

Vi является умным, но не обладает мощным поиском и заменой, как в Notepad ++, который показывает вам, что он нашел, позволяет расширять его и выборочно применять его в цвете, просто упомянуть одно нововведение.

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

Моей любимой раскладкой клавиатуры на протяжении многих лет являлся алмаз с диагональю Wordstar. По крайней мере, это было легко узнать и сразу стало понятно. Тот, который я ненавидел больше всего, был WordPerfect, который увеличил сложность и, похоже, был несколько основан на emacs.

Посмотрим правде в глаза. В наши дни у большинства людей есть GUI. И вроде это или нет текстовые редакторы несколько застряли в их возрасте.

Я думаю, что было бы лучше иметь универсальный редактор, который мог бы легко переключаться между emacs, vi, wordstar или любыми макетами клавиш и без потери более мощных команд, которые он может предложить. Реальные программисты должны использовать различные инструменты для редактирования. Почему бы не создать редактор, который бы соответствовал нашим потребностям, чтобы выполнить работу, а не принуждать нас к тому, чтобы делать что-то?

ответил Eli Frey 22 AM00000080000002831 2010, 08:57:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132