Каковы эффективность Emacs или Vim vs Eclipse?

Я начал кодирование около 5 лет назад. Я был представлен через Java и Eclipse, которые имеют существенную стигму, прилагаемую к сообществу разработчиков. Ряд людей в компании, которую я сейчас стажер, предпочитают emacs или vim. Я не вижу, как основной текстовый редактор работает быстрее или проще, чем IDE в целом, хотя я понимаю, что некоторые вещи, вроде построения, как правило, быстрее из командной строки.

Является ли это случаем клуба "старых мальчиков" или может быть более эффективным, чтобы запрограммировать проект таким образом?

Можете ли вы представить примеры использования для демонстрации? Если бы я выступал за Eclipse, я бы сказал, что рефакторинг и автозаполнение были довольно удобными инструментами.

Гав

Ответ 1

Я начал работать в среде IDE, например Eclipse, но перешел на Vim около 2 лет назад.

Причины, по которым вы можете использовать текстовый редактор:

  • Он может использоваться как среда IDE для любого языка (вы узнаете его один раз и используете его для всего)
  • Он может выполнять все эти причудливые вещи, такие как автозаполнение, рефакторинг и многие более сложные операции, которые вы можете расширить, добавив макросы или плагины
  • Он работает почти везде (и может использоваться через оболочку SSH)
  • Вам не нужен GB-сервер, чтобы запустить его

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

Ответ 2

Vim/Emacs

  • Очень быстрая/эффективная запись кода.
  • Низкий объем памяти
  • Быстрый доступ к командной строке
  • Бесконечные возможности с помощью скриптов/плагинов
  • Никогда не оставляйте клавиатуру

Eclipse,

  • Полнофункциональная среда IDE для многих языков
  • Большая поддержка рефакторинга

Все из них

  • Кросс-платформенная
  • Богатые функции
  • Расширяемые через плагины

Обычно я пишу тома кода через vim и выполняя задачи отладки через свою IDE. Знакомство с базой кода, безусловно, является фактором, поскольку IDE - отличный инструмент для прыжков и изучения незнакомого исходного кода.

Ответ 3

Аргумент "Eclipse for Java" - это другой аргумент, чем "Eclipse для [нечто, что не является java]". Eclipse действительно качается для Java.

Я имею в виду, что vi похож на отвертку или, может быть, швейцарский армейский нож, а Eclipse похож на большую комбайновую станцию ​​с ЧПУ и асфальтоукладчик. Вы точно не сравниваете их, вы просто используете оба.

Кроме того, вы работаете внутри чего-то гигантского, о котором вы мало знаете, но что Eclipse понимает? Пример будет работать над самим Eclipse. Здесь Eclipse обладает отличной видимостью, полной поддержкой языка, и вам нужны подсказки для тостов и ссылки на документацию.

Но если вы набираете 100-строчную программу Ruby для преобразования базы данных SQL, Eclipse не добавляет большого значения, особенно учитывая ее багаж.

Также важно настроить vi правильно, иначе вы не будете подавать апелляцию. Должны быть установлены параметры Autoindent, showmatch, tab и другие параметры. У вас должен быть простой способ создания файла тегов. Google может найти генераторы тэгов или просто написать один с нуля, несколькими строками shellcode и sed (1).

Я не считаю рефакторинг критерием. Это не то, что вы делаете один раз в час или даже один раз в день. Конечно, запустите большую IDE, когда вам нужно реорганизовать. О, и не ожидайте автоматического рефакторинга всего, кроме Java.

Наконец, vi действительно может сделать много вещей, которые IDE не может начать делать. Сгруппированное глобальное замещение регулярного выражения представляет собой обобщенный механизм рефакторинга-ничего. Чтобы оценить vi gestalt, вам нужно изучить режим линии ( ":" ). Вкратце, это похоже на то, что sed (1) внутри вашего редактора.

Ответ 4

Все зависит от того, что вы хотите/ожидаете и какова ваша модель использования.

Если вы ищете Java IDE, Eclipse трудно превзойти. Он написан на Java, для Java, людьми Java.

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

Если вы ищете инструмент, из которого вам никогда не придется уходить, потому что он может делать все, что угодно (отправлять/читать почту, управлять проектами, списками todo, компилировать, отлаживать и т.д. и т.д.), тогда Emacs более "эффективен".

Если вы ищете причины для переключения редакторов, выясните, чего вы хотите. Если вам нужен лучший Eclipse, vi и Emacs не дадут вам этого, придерживайтесь Eclipse.

Если вы ищете небольшой, проворный редактор, vi будет соответствовать счету.

Если вы ищете окончательно расширяемый редактор, Emacs - это способ.

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

Ответ 5

Emacs может быть мощным IDE, но, перейдя от Emacs к Eclipse, я должен сказать, что я никогда не вернусь. Eclipse просто предлагает так много функций, которые вы не можете получить в Emacs.

Mylyn и облачные виды данных и файлов, которые я использую, пользовательский интерфейс отладки, CVS UI, все встроены и легко доступны и используются. Я немного использую мышь для get'em.

Ответ 6

Я использовал vi в течение многих лет, чтобы редактировать код на разных языках и действительно люблю его. Но я нашел IDE, например Eclipse, еще лучше для разработки Java, и теперь я почти полностью работаю в Eclipse. Я время от времени отказываюсь использовать vi для нескольких специализированных мероприятий, таких как массовые вставки уведомлений об авторских правах, в основном те, которые касаются определенных видов исправлений, которые не очень автоматизированы в Eclipse. У меня также есть тип файла .java для Windows, когда я просто хочу посмотреть исходный файл, не дожидаясь открытия Eclipse.

Некоторые из привлекательных функций Eclipse:

  • имя метода завершение
  • выделение ошибок
  • всплывающие комментарии javadoc
  • рефакторинга

Я нахожу это намного более эффективным, чем vi в целом, поэтому вы должны попробовать его и посмотреть, действительно ли это относится к вам.

Ответ 7

Прежде всего. VIM более продуктивен для программирования, чем Eclipse. Ваша личная продуктивность в VIM может быть ужасной, но потенциальная кепка VIM намного выше. Это факт.

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

VIM предназначен для того, чтобы кинуть руки на домашнюю строку. Перемещение руки с клавиатуры на мышь деморализует. Это грубое движение двигателя. Движение вашей руки имеет phsycological эффект, который вредит вашей мотивации. Используя VIM, кто-то может запереть ваши запястья на клавиатуре, и вы все равно можете легко открыть файлы, разделить окна, открыть вкладки, построить проект, искать/заменять, менять шрифты, менять цвета и т.д. И все с молниеносной скоростью.

VIM является модальным. Это означает, что вам не нужно выполнять сложные комбинации клавиш, когда вы удерживаете Ctrl + shift + Key. В конечном итоге это причиняет вам боль. Вместо этого вы выполняете команды. Нет необходимости в ключевых комбо из-за модальности.

Мы сохраняем данные в нашей памяти, как компьютеры. Наша память может хранить только несколько значений за раз. Посмотрите, сколько различных целых чисел вы можете держать в голове, прежде чем они начнут ускользать. Мы преодолеваем это человеческое ограничение, записывая материал вниз. Если данные выпадают из нашей памяти, мы можем легко посмотреть, что мы записали, чтобы вернуть их. Если ваше время тратится на валовой двигатель, физические вещи теряют время, которое можно было бы потратить на обработку данных в вашем мозгу. Вы хотите, чтобы ваш ум выходил на экран без каких-либо усилий. Это может показаться не таким уж большим, но способность VIM легко передавать то, что у вас на экране, является БОЛЬШИМ увеличением производительности. Мне трудно сказать, что я пытаюсь сказать.

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

VIM поддерживает goign для определений с помощью ctags. Вы также можете найти все ссылки на элемент. Опять же, все, что вы пожелаете, может иметься в VIM.

Сценарии VIM огромны. Вы можете загружать или создавать тысячи цветовых схем и менять цвета в одно мгновение. Попытайтесь изменить шрифты или цвета в Microsoft Visual Studio, и он будет зависать в течение 20 секунд, пока он загружает данные. Он не позволит вам сохранять цветовые схемы, и вы должны тратить 30 минут на настройку ваших цветов и шрифтов каждый раз, когда вы хотите сменить декорации. В VIM вы можете установить расстояние между линиями до нуля, чтобы набрать больше строк кода на экране. Я получаю более 80 строк. Visual studio использует 2 пикселя интервала для каждой строки, и вы не можете ее отрегулировать!!! Меньше строк = больше прокрутки = меньше производительности = вынуждены использовать небольшие шрифты для большего количества линий = напряжение глаз.

Сплит-окна открываются в экземпляре в VIM. Это полезно, когда вам нужно посмотреть данные в одном разделе кода, который находится далеко от места, которое вы печатаете (или в другом файле). Вам не нужно тратить время на изменение размеров окон или беспокоиться о том, что окна GUI перекрывают друг друга и падают друг на друга. Незаблокированные окна кода можно открыть в закладках, чтобы не занимать пространство экрана, но разрешить быстрое переключение.

VIM как IDE: http://www.youtube.com/watch?v=MQy2rVOf-z0&feature=fvwrel VIM мести: http://www.youtube.com/watch?v=lQNFfhC4QI8

Ответ 8

Я помню, как я читал где-то об исследовании, которое показало, что люди воспринимают сочетания клавиш как более эффективные, чем mousing, когда на самом деле это было не всегда.

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

Я думаю, что эти эффекты могут объяснить большую часть крайней привязанности некоторых людей к Emacs/Vi.

Однако, в случае Eclipse, я нахожу, что он может быть очень медленным и даже кратковременным, но это не относится к IDE вообще.

Я регулярно использую Eclipse, VS и Emacs. Я бы тоже использовал TextMate, но у меня больше нет mac. Это зависит от того, что я делаю, а конкретно, какая система лучше всего поддерживает мой язык и инструменты.

Я знаю людей, которые тратят значительно больше времени на программирование своего редактора, чем тратят на это что-то полезное. Некоторые из них даже признают себя, что они делают это только за вызов. Другие люди часто утверждают, что Emacs/Vi могут делать гораздо больше, чем IDE, потому что они доступны для сценариев. Ну, большинство IDE (включая Eclipse) также могут быть написаны сценарием. В этом смысле почти все редакторы эквивалентны (хотя, я допускаю, некоторые редакторы легче записываются по сценарию, чем другие).

Если вам нравятся IDE, мой совет - продолжать использовать его. Нет ни одного True Editor.

EDIT:

Это, по-видимому, статья Нина Бастина. Я согласен, что это далеко не окончательный источник. Тем не менее, я все еще думаю, что моя точка зрения о том, что воспринимаемая и реальная производительность не является тем же, все еще сохраняется.

Ответ 9

Это зависит от языков.

Для Java или .NET используйте среду IDE (Eclipse, Netbeans, Visual Studio...).

Для почти всех других языков (C, С++, ruby, python, haskell, lisp...) vi и emacs лучше, на мой взгляд.

Ответ 10

Эффективность от vim/emacs в основном обеспечивается их интенсивным использованием клавиатуры. В этих программах вы можете делать все что угодно прямо с клавиатуры, вместо того, чтобы останавливаться и использовать мышь.

Ответ 11

Я бы сказал, что фактические редакторы vim/emacs намного превосходят текстовый редактор Eclipse с точки зрения ярлыков, которые они предлагают. Однако я полностью согласен с вами в рефакторинге.

Большинство людей должны писать сценарии, чтобы выполнить уровень рефакторинга, на который способен Eclipse. Я думаю, что часть этого - это хвастовство, или люди просто делают это так же, как всегда.

Ответ 12

В любое время я буду использовать emacs вместо затмения. Я также должен сказать, что голой кости emacs, это не так уж и здорово, но после некоторой настройки вы никогда не захотите отпустить его. В частности, я расскажу вам, насколько полезными были emacs при написании моей магистерской диссертации, которая должна четко объяснить, почему Eclipse уступает, просто потому, что он менее универсален.

Я мой главный тезис, который я написал на следующих языках программирования: С++, Python и R. В дополнение, мне пришлось написать тезис, для которого я использовал LaTeX. Более того, мне пришлось написать кучу скриптов оболочки и скриптов cmake. Угадай, что? Emacs имеет большую поддержку для всего этого. Специально, было приятно работать с AuCTeX для производства документов LaTeX. Затем Emacs обеспечивает отличный режим ESS для работы с R. Аналогичным образом он предоставляет средства для python. После того, как у меня были сценарии cmake для создания кода на С++, мне пришлось только вызвать компиляцию с помощью emacs, и я закончил. Eclipse не может вообще этого делать, поэтому вам нужно научиться использовать множество разных программ. Делать заметки? Для этого существует орг-режим, и это здорово!

И тогда моя программа нужна для очень мощного компьютера (не как любой ноутбук). Таким образом, я мог бы просто сделать все дистанционно из emacs!!!! Используя tramp, я обнаружил, что делаю удаленную интерактивную оценку R-кода, удаленную компиляцию, выполнение и отладку кода на С++ и все в одном и том же хорошем локальном окне emacs, которое я использовал. Напротив, мои друзья, которые использовали отдельный инструмент для всего, были намного медленнее в разработке программного обеспечения, предназначенного для работы на другом компьютере.

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

Надеюсь, что это поможет.

Ответ 13

Недавно у нас был этот аргумент. Мое мнение заключалось в том, что одна единственная функция, с которой я не мог обойтись, - это автозаполнение Emacs. Автозаполнение Eclipse основано на синтаксическом анализе - код анализируется, и по мере ввода кода вам предлагается выбор завершения. Автозаполнение Emacs основано на простом текстовом анализе. Это означает, что он работает в обычном тексте, в комментариях, в документации - везде. Я продолжаю говорить, что автозаполнение Emacs - это то, что IntelliSense хочет, когда оно вырастет.

Update:

Eclipse действительно предлагает Alt-/который должен быть похож на Emacs. Не уверен, насколько хорошо он работает.

Ответ 14

Единственное место, которое я предпочитаю IDE, - это отладка. Я настроил среду vim для отладки, но было так больно использовать, настолько неуклюжий, что теперь я просто переключаюсь на свою IDE (Netbeans), когда мне нужно отлаживать. vim отлично подходит для редактирования текста, IDE отлично подходит для более сложных вещей (например, отладки и некоторых задач, связанных с управлением проектами).

Ответ 15

Как и некоторые из вышеперечисленных сообщений, я начал с IDE (Eclipse). Оттуда я переехал в Emacs, а затем вернулся в богатый текстовый редактор (TextMate).

Для меня эффективностью была возможность иметь редактор на уровне интерфейса. Позволяя мне интегрировать другую службу, которую я создал (или другие), в свою среду псевдо-IDE.