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

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

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

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


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

Ответы [ 29 ]

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

Для меня плюсы Emacs,

  • tramp-mode позволяет редактировать удаленные файлы через ssh. как локальные файлы.
  • tramp-mode + dired = полнофункциональный клиент sftp
  • поддержка всех языков, которые вам когда-либо понадобятся.
  • встроенный эмулятор терминала (term-mode), поэтому я могу сохранять кодирование без переключения между приложениями.
  • расширяемость все, что вам не нравится, вы можете изменить с помощью lisp.
9 голосов
/ 16 сентября 2009

Существует огромная разница на повседневном уровне - Vim (или любой другой вариант vi) по своей природе модальный (вы переходите в командные режимы, где вы не можете редактировать) и Emacs (наряду с большинством другие редакторы) не являются.

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

Лично я также считаю, что Emacs гораздо более расширяем. Вы можете найти пакеты Elisp для многих вещей.

Мне любопытно, почему вы думаете изучить один из них на более традиционной IDE. Для чего ты хочешь научиться одному из них?

8 голосов
/ 18 апреля 2017

Преимущества Emacs

  • Emacs имеет как немодальный интерфейс (по умолчанию), так и модальный (например, он может эмулировать vim и vi через Evil, Viper или Vimpulse).

  • Одна из самых портированных компьютерных программ. Он работает в текстовом режиме и под графическим интерфейсом пользователя в самых разных операционных системах, включая большинство Unix-подобных систем (Linux, различные BSD, Solaris, AIX, IRIX, macOSetc.), MS-DOS, Microsoft Windows, AmigaOS, и OpenVMS. Системы Unix, как бесплатные, так и частные, часто предоставляют Emacs в комплекте с операционной системой.

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

  • Распространенная онлайновая справочная система с привязками клавиш, функциями и командами, документированными на лету.

  • Расширяемый и настраиваемый вариант языка программирования Lisp (Emacs Lisp) с функциями, которые включают:

  • Мощный и расширяемый файловый менеджер (dired), встроенный отладчик и большой набор инструментов разработки и других инструментов.

  • Наличие каждой команды в качестве функции Emacs Lisp позволяет командам DWIM (делать то, что я имею в виду), программно реагируя на прошлые действия и состояние документа. Например, команда switch-or-split-window может переключиться на другое окно, если оно существует, или создать его при необходимости. Это сокращает количество нажатий клавиш и команд, которые пользователь должен запомнить.

  • «ОС внутри ОС». Emacs Lisp позволяет программировать Emacs далеко за пределы возможностей редактирования. Даже базовая установка содержит несколько десятков приложений, в том числе два веб-браузера, программы чтения новостей, несколько почтовых агентов, четыре IRC-клиента, версию ELIZA и множество игр. Все эти приложения доступны везде, где работает Emacs, с одинаковым пользовательским интерфейсом и функциональностью. Начиная с версии 24, Emacs включает в себя менеджер пакетов, что упрощает установку дополнительных приложений, включая альтернативные веб-браузеры, EMMS (Emacs Multimedia System) и многое другое. Также доступны многочисленные пакеты для программирования, включая некоторые, предназначенные для определенных комбинаций языка / библиотеки или стилей кодирования.

Преимущества vi-подобных редакторов

  • Команды редактирования являются составными
  • Vi имеет модальный интерфейс (который Emacs может эмулировать)
  • Исторически сложилось, что vi загружается быстрее, чем Emacs.
  • Будучи тесно связанным с традицией UNIX, он работает на всех системах, которые могут реализовать стандартную библиотеку C, включая UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD и POSIX-совместимые системы.
  • Расширяемый и настраиваемый с помощью скрипта Vim или API для интерпретируемых языков, таких как Python, Ruby, Perl и Lua
  • Повсеместный. По сути, все Unix и Unix-подобные системы поставляются со встроенным vi (или его вариантом). Vi (и ex, но не vim) указывается в стандарте POSIX.
  • Среды восстановления системы, встроенные системы (особенно системы с busybox) и другие ограниченные среды часто включают в себя vi, но не emacs.

Источник: https://en.wikipedia.org/wiki/Editor_war

8 голосов
/ 17 июня 2014

Я бы хотел привести цитату из книги «Искусство программирования в UNIX»:

Многие люди, которые регулярно используют и vi, и Emacs, обычно используют их для разные вещи, и найти ценным знать и то, и другое.

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

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

Что я действительно хочу выделить, так это: « Многие люди считают полезным знать и то, и другое

8 голосов
/ 06 апреля 2016

Теперь вам даже не нужно думать о разнице между этими двумя из-за Spacemacs . Это дистрибутив Emacs для сообщества.

Как сказано,

Лучший редактор - это ни Emacs, ни vim, это Emacs и Vim.

Spacemacs сочетает в себе лучшее из Emacs и Vim, что значительно облегчает вашу жизнь и работу.

У него также есть приличный логотип.

См. Скриншот ниже,

http://spacemacs.org/doc/img/spacemacs-python.png

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

Для меня в emacs есть лучшие инструменты разработки (не только инструменты на основе тегов).

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

Emacs имеет режим viper, поэтому в каком-то смысле он предоставляет расширенный набор функций (кроме описанных в Какие функции Vim отсутствуют в Emacs с Viper и Vimpulse? ).

vi (и VIM IIRC) имеет меньший вес (он может редактировать файлы на месте), но предлагает меньше функций (взаимодействие подпроцесса, язык расширения).

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

Самым большим отличием для меня при выборе emacs над vim была встроенная поддержка gdb в emacs. Vim не включил это в свой дистрибутив по умолчанию, и проект по интеграции gdb и vim был почти невозможен для работы с MacVim

4 голосов
/ 05 марта 2014

Это как яблоки и апельсины. Оба имеют разный дизайн и философию. Vim - это текстовый редактор, а Emacs - интерпретатор Lisp, который выполняет редактирование текста.

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

Расширение Vim с помощью bash / zsh и tmux обычно легко и позволяет многому научиться. ИМХО это хорошая кривая обучения. Главное - научиться интегрировать эти вещи, чтобы получить большее работающее приложение. С Vim вам нужно изучить интеграцию, потому что она не интегрируется естественным образом, если вы не скажете, как это сделать. Еще одно стоящее расширение, которое я использую, это Tig. Это основанный на ncurses интерфейс Git. У меня просто есть привязка, которая молча открывает Tig, а затем я делаю там все Git.

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

3 голосов
/ 13 февраля 2014

Желтая точка зрения:

vi (не vim) - это профессиональная необходимость. У вас всегда есть какая-то форма vi легко доступны, независимо от окружающей среды. Вы можете быть в ви в emacs вы можете быть в vi для создания команд bash в unix-land.

Даже Microsquish должен поддерживать vi (хотя они хорошо справляются с скрывая это) из-за государственного и корпоративного соответствия опубликовано стандарты.

По моему мнению, если вы занимаетесь практической работой в напряженной обстановке - не тепличный цветок, приуроченный к одной причудливой установке в разработке окружающая среда или в академических кругах - знать много о модном редакторе - это работа гандикап. Не изучайте все модные трюки в vim или emacs, и не разработайте кучу макросов, чтобы окружение редактирования соответствовало вашей воле. Это огромная трата времени, которая встает у вас на пути, когда вы занимаетесь различные машины, которые вы, вероятно, не можете оправдать на заводе окружающая среда.

Прочитайте статью Билла Джоя - это очень компетентно, возможно, даже красивое, инженерное упражнение по редактированию простого текста очень и очень быстро. Здесь действует правило Парито: 80% фруктов приходится на 20% из корзин. Редактирование простого текста очень быстро - суть компетентность в редактировании - все остальное необязательно - и иногда вредно.

...