Как бы вы сравнили эти редакторы? Каковы плюсы и минусы каждого?
[ примечание ] На это не должны отвечать те, кто «ненавидит одного и любит другого» или те, кто не использовал оба.
Как бы вы сравнили эти редакторы? Каковы плюсы и минусы каждого?
[ примечание ] На это не должны отвечать те, кто «ненавидит одного и любит другого» или те, кто не использовал оба.
Ответы:
Я использую оба, хотя, если бы мне пришлось выбирать один, я знаю, какой бы я выбрал. Тем не менее, я постараюсь сделать объективное сравнение по нескольким вопросам.
Доступно везде? Если вы профессиональный системный администратор, работающий с системами Unix, или опытный пользователь на встроенных устройствах (маршрутизаторы, смартфоны с Busybox и т. Д.), Вам необходимо знать vi (не Vim), поскольку он доступен во всех системах Unix и большинстве Unix-подобные системы, будь то настольные, серверные или встроенные. Для обычного пользователя этот аргумент не имеет значения: Emacs легко доступен для любой операционной системы настольного компьютера или сервера, и, поскольку он поддерживает удаленное редактирование, его все равно достаточно, чтобы он был установлен на вашем компьютере.
Bloated? Emacs когда-то с юмором стоял за «Восемь мегабайт и постоянный обмен». Прямо сейчас на моем компьютере Google Chrome требуется примерно столько же ОЗУ на вкладку, сколько в Emacs для 100 открытых файлов, и я даже не буду упоминать Firefox. В 21 веке раздувание Emacs - это просто миф.
Раздувание функций тоже не проблема. Если вы не используете его, вам не нужно знать, что это там. Функции Emacs не используются, когда вы их не используете, и документация очень хорошо организована.
Время запуска : Сторонники Vi (m) жалуются на время запуска Emacs. Да, Emacs запускается медленно, но это не имеет большого значения: вы запускаете Emacs один раз за сеанс, а затем подключаетесь к запущенному процессу emacsclient
. Так что медленный запуск Emacs - это в основном миф.
Есть одно исключение, когда вы входите на удаленный компьютер и хотите отредактировать файл там. Запуск удаленного Emacs (обычно) медленнее, чем запуск удаленного Vim. В некоторых ситуациях вы можете поддерживать работу Emacs внутри Screen. Вы также можете редактировать удаленные файлы из Emacs, но это нарушает поток, если вы находитесь в сеансе ssh в терминале. (Начиная с XEmacs 21 или GNU Emacs 23, вы можете открыть окно Emacs из запущенного экземпляра X внутри терминала.)
Перевернув таблицы, я заметил, что Vim загружается заметно дольше, чем Emacs ( vim -u /dev/null
против emacs -q
). По общему признанию это было на странной платформе (Cygwin).
Начальная кривая обучения: это варьируется от человека к человеку. График Майкла Мрозека заставил меня рассмеяться. Серьезно, я согласен с тем, что кривая обучения Vim начинается быстрее, круче, чем у любого другого редактора, хотя это можно уменьшить с помощью gvim.
Поскольку я развеял пару мифов Emacs, позвольте мне развеять миф vi: модальный редактор не сложен и не болезнен в использовании. Это требует небольшой привычки, но через некоторое время это кажется очень естественным. Если бы я изменил дизайн vi (m), я бы определенно сохранил режимы.
Асимптотическая кривая обучения: и Vim, и Emacs имеют много функций, и вы будете продолжать находить новые после многих лет использования.
Производительность : это чрезвычайно сложная тема. Сторонники vi (m) утверждают, что вы можете делать практически все, не выходя из домашнего ряда, и это делает вас более эффективным, когда вам это нужно больше всего. Сторонники Emacs возражают, что Emacs имеет много команд, которые используются не часто, поэтому не стоит связывать ключи, но они чертовски удобны, когда они вам нужны ( обязательная ссылка на xkcd ).
Мое личное мнение заключается в том, что Emacs в конечном итоге выиграет, если у вас нет проблем с печатанием (и даже тогда вы можете настроить Emacs так, чтобы он требовал только последовательности клавиш, а не комбинации, такие как Ctrl+ буква). Клавиши домашнего ряда хороши, но они часто не так уж выигрывают, потому что вам нужно переключать режимы. Я не думаю, что есть что-то, что Vim может сделать значительно более эффективно, чем Emacs, тогда как обратное утверждение верно.
Настраиваемость : оба редактора являются программируемыми, и для обоих существует обширный пакет доступных пакетов. Тем не менее, Vim - редактор с макроязыком; Emacs - это редактор, написанный на Лиспе с некоторыми специальными примитивами. Emacs выигрывает эффектно, когда вы пытаетесь сделать что-то, о чем авторы просто не думали. Это происходит не каждый день, но накапливается с годами.
Больше, чем редактор : Vim - редактор. Emacs - это не просто редактор: это также IDE, файловый менеджер, эмулятор терминала, веб-браузер, почтовый клиент, новостной клиент ... Это хорошо или плохо - вопрос дискуссионный. Но вы можете использовать Emacs в качестве простого редактора (см. «Разворот возможностей» выше).
В качестве IDE : и Vim, и Emacs поддерживают множество языков программирования и других текстовых форматов. Помимо основ, таких как синтаксическое окрашивание и автоматическое отступление, оба имеют расширенные функции IDE, такие как поиск перекрестных ссылок кода и документации, вспомогательные вставки и рефакторинг, интегрированный контроль версий и возможность инициировать компиляцию и переходить к первой ошибке.
Одной из областей, где Emacs лучше, чем Vim, является взаимодействие с асинхронными подпроцессами. Вот когда вы начинаете длинную компиляцию и хотите сделать что-то еще в том же экземпляре редактора, пока компилятор работает. Или когда вы хотите взаимодействовать с циклом Read-eval-print - Emacs действительно хорош в этом, Vim предлагает только неуклюжие хаки. Тем не менее, новая ветка vim, Neovim , исправила это и внедрила другие исправления ошибок, не реализованные в стандартной версии vim.
Я опубликую то, что я считаю основными преимуществами каждого:
Emacs имеет значительно больше расширений, позволяющих вам выполнять задачи, которые связаны только с текстовым редактором, такие как просмотр файловой системы или работа с контролем версий, а также расширения, которые никак не связаны с текстовым редактором, такие как чтение RSS-каналов. Если вам нужна среда, а не просто текстовый редактор, Emacs будет лучше, чем Vim. Я также думаю, что изучать Emacs намного проще, несмотря на то, что некоторые заставят вас поверить:
В частности, я думаю, что начинающий пользователь Emacs будет быстрее, чем начинающий пользователь Vim
С другой стороны, Vim, несомненно, быстрее. Похоже, что это основная часть аргумента, но, по моему мнению, нет никакого конкурса вообще; Я считаю себя свободным пользователем Emacs, и я не могу сравниться с парой знакомых, которые имеют равные знания Vim. Проблема в том, что количество людей, которые достаточно хорошо владеют Vim, чтобы быть таким быстрым, невероятно мало (из ~ 30 человек, с которыми я регулярно общаюсь и которые используют Vim, я думаю, что только один исключительно хорош в этом). Существует большой разрыв между возможным приростом скорости и фактическим приростом скорости, которого вы достигнете; Пользователи Emacs будут почти такими же быстрыми, как 99% пользователей Vim, и (как я уже говорил в разделе Emacs) начинающие пользователи Emacs, вероятно, будут быстрее, чем начинающие пользователи Vim.
Это vi
доступно в любой системе Unix (или почти), но вы не можете сказать это ни о каком другом редакторе. Это причина № 1, imo, для изучения и ознакомления vi
(пожалуйста, обратите внимание: «vi», а не «vim»). Я никогда не видел, чтобы Emacs был доступен при установке по умолчанию.
Я не говорю, что не используйте Emacs, или это единственная причина для использования Vim, но когда вы хотите использовать Unix-системы, которые не принадлежат вам ... vi
это часть универсального языка.
vim
пользователь, но мне часто бывает трудно его использовать vi
, скорее всего из-за ключа END (vim поддерживает его, но vi не поддерживает или, по крайней мере, не использует по умолчанию)
nano
я получаю целую кучу ijkloOah в моем файле ... пока не пойму, что не могу использовать их для навигации. Я не использую клавиши со стрелками для навигации.
vim
:)
Я думаю, что они оба потрясающие. Я думаю, что любой из них может сделать практически все, что вы можете себе представить, и они оба настолько настраиваемы, что к тому времени, как вы закончите настраивать их, они оба будут именно такими, какими вы хотите их видеть, ни больше, ни меньше.
Emacs выделяется мне тем, что он немного ближе (хотя все еще не соответствует) стандартам ISO / IEC юзабилити и согласованности для пользовательских интерфейсов, и, следовательно, не использует столько уловок с вашими «инстинктами» в отношении того, что делает vim. Время жизни инстинктов, которые вы разработали, работая с другими программами, не сработает против вас.
Vim - это совершенно другая модель, и во многих отношениях она лучше сама по себе, поскольку гораздо меньше полагается на последовательности Cntrl / Alt, а вместо этого - только на ее режимы, позволяя вам сохранять свои харды на домашней строке и вводить текст. Быстрее. Но vim практически уникален, и если вы не установите какое-то очень необычное сопровождающее программное обеспечение (например, Vimperator, Jumanji / Zathura и т. Д.), Инстинкты, которые вы развиваете, работая с vim, не перейдут на другие программы и наоборот. Тем не менее, я остановился на Vim себя. Вы должны остановиться на одном рано или поздно, к лучшему или худшему, так как трудно овладеть обоими.
Я использую оба на регулярной основе. Я рассматриваю Emacs как «живой» редактор, тогда как я использую Vim для быстрых одноразовых задач. Внешне Emacs гораздо более раздутый, чем Vim, и поэтому «запускать» не так удобно, как Vim, но я также обнаружил, что философия пользовательского интерфейса от одного к другому поддерживает эту парадигму. Emacs гораздо больше построен, чтобы держать вас внутри, делая вещи приятными и удобными, чтобы вам не пришлось уходить, тогда как vim гораздо более "Unixy" и видит себя как часть большего пояса инструментов.
Многие люди бегут из Emacs из-за его сильной зависимости от битов , но это довольно глупая причина для меня. Реальная сила, которую Emacs имеет над Vim, - это настраиваемость, и с мощью Viper и т. Д. Это действительно не проблема. Конечно, Vim-Script обеспечивает свой собственный уровень настройки, и если, скажем, ваш любимый язык программирования не был снабжен соответствующим средством подсветки синтаксиса, вы наверняка могли бы его создать, но в конечном итоге Emacs - это самодостаточный lisp-компьютер, и в конец, вы можете сделать гораздо больше, возиться с этим. В Vim просто нет таких инструментов, как gnus или org-mode . Короче говоря, Emacs - это не просто редактор, это практически проклятая операционная система.
Для манипулирования текстом я бы сказал, что они в точности соответствуют.
Я вложу свои 0,02 доллара, так как я потратил немало лет, используя emacs и XEmacs, а затем перешел на vim. Честно говоря, в 1990-1992 годах я довольно часто использовал vi, поэтому я был знаком с его пользовательским интерфейсом.
Emacs
Emacs был описан как система lisp, которую просто использовали для написания редактора, и в этом есть доля правды. Вы можете реализовать практически все, что захотите, в elisp, если не торопитесь, чтобы понять окружающую среду. Не могу сказать, что когда-либо узнавал это так хорошо, но иногда я делал что-то холодное. Emacs и Xemacs не полностью совместимы на этом уровне, поэтому сторонние скрипты могут работать на одном, но не на другом.
Было замечено, что RMS и некоторые другие известные хакеры Emacs были вынуждены отказаться от программирования из-за проблем с OOS, где до сих пор работают Билл Джой, Брэм Муленаар и другие знаменитости. Emacs тяжело на твоих мизинцах.
Emacs является гораздо более католической системой, чем vi, и рассматривается как канонический пример разработки программного обеспечения . Наряду с Netscape, это один из вкладов jwz в доказательство этого закона.
Одна уникальная вещь, которую я однажды сделал с xemacs, состояла в том, чтобы он работал на машине и открыл сеанс x на xterminal (на самом деле старый перенастроенный Sun 3/60) в другой комнате для того же буфера на том же работающем экземпляре.
Плюсы: расширяемый, более мощный, чем любой другой редактор, известный человеку, зрелая интеграция практически со всеми основными инструментами свободного программного обеспечения.
Минусы: сомнительная эргономика, elisp нелегко выучить.
напор
Отказ от ответственности - я перешел от использования 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 редакторы являются стандартными в большинстве, если не во всех дистрибутивах Unix или Linux общего назначения. Возможно лучшая эргономика.
Минусы: Модальный пользовательский интерфейс кажется странным людям, привыкшим к пользовательским интерфейсам Windows. Меньше проблем с vim в эти дни.
Я обычно использую Vim, но они оба замечательные редакторы.
Научиться пользоваться vi было неприятно, но я прошел через это и научился любить его. Мои самые неприятные моменты были, когда был включен ключ блокировки крышки. Вы можете попробовать с gVim, но одно из самых больших преимуществ vi и Emacs - это возможность делать аккуратные вещи, не отрывая рук от клавиатуры, и gVim, скорее всего, заставит вас пользоваться мышью. (Изучение одновременной игры в жанре roguelike дало мне возможность тренироваться с клавишами перемещения курсора, но иногда заставляло меня перемещаться по диагонали в документах.)
Emacs, вероятно, более доступен. Это немодально, и вы не облажаетесь, нажимая клавишу блокировки колпачков. Идея управления редактором с помощью набора букв с нажатой клавишей управления не должна быть слишком чуждой для современных опытных пользователей, хотя фактические клавиши для действий будут казаться дикими и произвольными для обычного пользователя Windows / Mac OS X. Опять же, версии, которые позволяют вам использовать мышь, в долгосрочной перспективе приносят вам мало пользы.
Оба требуют определенного уровня экспертизы для эффективного использования. В отличие от, скажем, Блокнота, вы не можете просто сидеть и редактировать.
И то, и другое настраивается, хотя за мои деньги написание расширений в одном и том же Лиспе, в котором написан редактор, облегчает работу. (Emacs, как обычно распространяется, на самом деле не редактор. Это среда Lisp, специально предназначенная для обработки текста, с большим количеством предварительно написанного программного обеспечения, включая редактор. Отсюда и шутка: «Emacs создает приличную оболочку, но может использовать лучший редактор. ")
Я обычно использую Vim, потому что после интенсивных тренировок мне легче. Это может быть связано с преимуществами системы режимов, где огромное количество команд доступно с помощью одного пальца рядом с домашними строками, или «синдром детской утки», который очень применим к редакторам: как только вы выучите хорошую, вы обычно придерживаетесь к этому.
Вы не ошибетесь, используя либо.
Основная причина, по которой я не использую vi / vim, заключается в том, что он модальный. Основная причина, по которой я использую vi, заключается в том, что он доступен практически везде.
Мне кажется, что вышеприведенный комментарий "vim is modal" неверен. У Вима есть команды. Вы можете сделать «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.
set -o vi
в bash
или zsh
не слишком сложно запустить (или положить в rc
файл), по моему мнению.
gnuplot
Postgresql psql
, MySQL mysql
и множество других интерфейсов более или менее по умолчанию используют режим Emacs. Если бы только Oracle мог sqlplus
сделать редактирование командной строки ... нет, нет. Это было бы слишком много, чтобы спросить у крупной корпорации. У них есть тенденции, чтобы следовать!
inputrc
делается для инструментов оболочки, но потом я ловлю себя на полсекунде, почему j
не прокручивает, скажем, Mendeley Desktop после переключения на него с терминала, и их несколько раз просили привязки vim. К сожалению, не может охватить все и иметь согласованную среду.
mysql(1)
, psql(1)
, gnuplot(1)
, и python(1)
, perlconsole(1)
, lftp(1)
, smbclient(1)
и в самом деле много интерактивных программ были обеспокоены привязками для редактирования строки. Все эти программы просто используют GNU Readline , и режим по умолчанию для GNU Readline (что неудивительно) GNU Emacs-подобный. set editing-mode vi
в вашем ~/.inputrc
и вуаля - все эти инструменты имеют Vi-подобные сочетания клавиш.
Поскольку это прямо не указано, я добавлю, что нет лучшей среды программирования (Lisp in a box, SLIME и т. Д.), Чем слегка измененный дистрибутив Emacs. Все мои потребности в программировании (99%) решаются изнутри Vim, но для всех тех библиотек и подпрограмм Lisp, которые я пишу, мне нужно запустить Emacs, чтобы сделать что-нибудь продуктивное.
Я использую Vim / gVim.
Раньше я использовал Emacs, но обнаружил, что gVim в целом работает быстрее на медленных машинах, плюс, из-за требований POSIX, vi доступен практически везде.
Когда я использую Vim или gVim, я часто использую мышь, я думаю, что поддержка для нее великолепна.
Я начал использовать Emacs, потому что его было проще использовать для начинающего пользователя. Я обнаружил, что использование nano по какой-то причине довольно подвержено ошибкам, и в какой-то момент я понял, что мне гораздо удобнее использовать vi.
Прямо сейчас это смесь. Я часто использую Eclipse и gedit. Vim, однако, по-прежнему мой любимый и наиболее используемый редактор.
Я использую gVim и Emacs достаточно хорошо, чтобы быть продуктивным, хотя я не разбираюсь ни в одном. С уверенностью могу сказать, что Vim и gVim работают быстрее на моем ноутбуке с Windows 7 (который я должен использовать на работе). Emacs в Windows имеет странную привычку «делать паузу» на одну минуту и перестать отвечать на запросы, даже продолжая принимать ввод с клавиатуры, прежде чем спешно выплевывать все накопленное в буфере клавиатуры. Этого не происходит в Mac OS или Linux. Тем не менее, я чаще всего использую Vim или gVim на всех платформах, поэтому мне не нужно останавливаться и думать о том, какой редактор я использую и настраивать. Тем не менее, в чисто * nix-среде я, вероятно, останусь с Emacs, потому что нахожу немодальное редактирование немного более естественным.
Итог: на мой взгляд, оба редактора достаточно мощны, чтобы справиться с любыми нуждами редактирования текста. Выбор должен основываться на практических соображениях (таких как особенности реализации платформы) и стиле работы.
Основное различие между Emacs и Vim - эргономично. Существует синдром запястного канала, CTS, как вы знаете. Emacs очень опасен, если у вас есть CTS и провоцирует CTS. Vim - нет, об этой разнице можно прочитать во многих местах. Например, в Vim вы можете редактировать текст только одним пальцем. В Emacs - нельзя :)
Я использую vi
/ nvi
(НЕ vim
), потому что это просто и ненавязчиво.
vim
любит пискать так сильно, что его тяжелее и несколько неочевидно быть отключенным. Мне пришлось физически
удалить внутренний динамик компьютера, прежде чем в конце концов обнаружил, что похороненный реф о том, как это сделать :)
set vb t_vb=
Также я не использую синтаксическую раскраску, серый на черном для меня самый красивый.
И, может быть, я слишком глуп, чтобы понять, что запутанным, нажатием нескольких клавиш, emacs
единственная комбинация из трех клавиш, которую я помню, это CTRL-ALT-DEL.
"Каковы плюсы и минусы Vim и Emacs?" - ха!
Я в основном оставлю плюсы другим.
Минусы обоих из них в том, что они оба старой школы. В течение многих лет я использовал, вероятно, 50 различных редакторов, от линейных редакторов Basic до суперскоростных редакторов с кодовой сборкой (VEDIT для одного), до шикарных графических редакторов, некоторые лучше, чем другие. Я даже написал свой собственный специальный редактор под названием ForthStar и адаптировал его для редактирования дерева btrieve листьев с несколькими индексами для мощного поиска, например, для мгновенного поиска последних отредактированных листьев или для быстрого поиска компонентов кода или родительских листьев или дети.
Я думаю, что и vi, и emacs - это больше религия, чем мышца. Творческие умы, которые их создали, в значительной степени продвинулись, и новой поддержке не хватает смелости и умения заново их изобретать.
Да, Emacs может многое, но он замедлен из-за lisp, красивого и теперь в значительной степени устаревшего языка.
Оба застряли в сложных раскладках клавиатуры. Emacs может немного приспособиться к пользователю, признав, что есть ключ Alt, а не античная Meta. И, как и WordStar, признают, что держать CA CB прямо от CA B при быстрой печати не стоит. Лучше просто иметь тот, который запускается любой ключевой комбинацией. Да, вы можете изменить привязки клавиш, но тогда какой беспорядок у вас будет позже.
Vi умна, но ей не хватает мощного поиска и замены, как в Notepad ++, который показывает вам, что он обнаружил, позволяет расширить его и выборочно применить его в цвете, чтобы упомянуть одно новшество.
Практически любой другой графический интерфейс в наши дни позволяет масштабировать с помощью колесика мыши. Emacs GUI, похоже, не работает. А где приятный крик, как у Кейт?
На протяжении многих лет моей любимой раскладкой клавиатуры был курсор в виде курсора Wordstar. По крайней мере, это было легко учиться и сразу имело смысл. Больше всего я ненавидел WordPerfect, который увеличивал сложность и, похоже, был основан на emacs.
Давайте посмотрим правде в глаза, у большинства стран есть GUI в эти дни. И нравится это или нет текстовые редакторы несколько застряли в их возрасте.
Я думаю, что было бы лучше иметь универсальный редактор, который мог бы легко переключаться между emacs, vi, wordstar или любым другим расположением клавиш без потери более мощных команд, которые он может предложить. Настоящие программисты должны использовать различные инструменты редактирования. Почему бы не иметь редактора, который бы отвечал нашим потребностям для выполнения работы, а не заставлял нас делать то, что нужно?
M-! emacs RET
Это как поиск в Google для "Google"