Я использую IDE (Eclipse) для разработки программного обеспечения. Почему я должен переключиться на vim или emacs? [закрыто]

Моя дневная работа - разработчик java /web. Я использую eclipse для ~ 5 лет. Я думаю, что это отлично, и я также использую Webstorm для javascript и html /jsp.

Мне иногда нужно ssh на сервер и беспорядок с файлами конфигурации; для этого я использую vi, и это болит. Мне нужно создать веб-страницу, в которой перечислены синтаксис /команды: нажмите escape, затем asterix, поверните три раза и текст будет введен двумя строками над курсором . Его так неинтуитивный для меня, и я представляю любого, кто вырос в конце восьмидесятых девяностых годов.

Вот основные причины, по которым я думаю, что затмение великолепие (и я предполагаю другие IDE), и не переключаюсь на emacs и /или vim.

  • Выделение ошибок без необходимости перекомпилировать проект.
  • Кодовая помощь.
  • Рефакторинг.
  • Открытие вызова hiearchy /Открытие декларация.
  • Полностью интегрирован с контролем источника.
  • Отладчик включен.
  • доступность сторонних плагинов - например FindBugs /Checkstyle.

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

Почему люди используют emacs /vim? Используют ли люди, которые его используют, на сложных объектно-ориентированных проектах в крупных организациях?

Каковы причины перехода на vim /emacs. Как повысилась бы производительность, если бы я переключился?

30 голосов | спросил 5 revs, 2 users 100%
NimChimpsky
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

16 ответов


34

Используйте любой инструмент, соответствующий вашим потребностям. Знание VIM или Emacs - это хорошо, если вам когда-либо приходилось заходить на удаленный сервер и редактировать файл конфигурации или что-то подобное. Я знаю VIM достаточно хорошо, но я бы не использовал его для разработки на Java. Вот что делают Eclipse, Netbeans и т. Д.

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
39

У Emacs и Vi все еще есть место.

  • Они повсеместно доступны в Unix и Unix-подобных средах и могут быть установлены на большинстве других популярных платформ.

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

  • Они запускают текстовый терминал, поэтому вы можете использовать их в сеансах telnet и ssh.

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

Ключом к пониманию этих программ, однако, является то, какие проблемы они изначально должны были решить. Для Vi это редактировало текстовые файлы через терминальные соединения так же медленно, как 300 бод. В этой среде вы не хотите отображать меню или кардинально изменять содержимое экрана, если можете избежать этого.

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

Очевидно, потребности людей сильно изменились с тех пор, как эти программы были введены, но у них все еще есть некоторые реальные сильные стороны. Я изучил основы обоих и использую их на еженедельной основе. Тем не менее, я думаю, что их сильные стороны часто завышены. Они достигли такого легендарного статуса, что люди не признают своих слабостей и вместо этого склонны думать, что они делают что-то неправильно, если Emacs /Vi не делает их более продуктивными, чем Eclipse или Visual Studio.

Теперь к точке.

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

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
15

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

Несколько лет назад я начал использовать Eclipse, и нет никаких шансов, что я вернусь к emacs свободно. Извините мышечную память, даже если вам не хватает старого C-x r SPC 1, Eclipse делает меня намного более продуктивным, и это важно.

Нет, я не думаю, что вы должны переключаться , но вам нужно посвятить пару часов, чтобы изучить основы vim, поэтому вам больше не нужно искать.

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
7
  

Почему мне нужно переключиться на vim или emacs?

Скорее всего, вы не должны переключаться . Vim - отличный, мощный текстовый редактор, но он не является заменой для IDE, а не должен быть! Eclipse очень хорош в своем подмножестве IDE специфические вещи, и vim очень хорош в своем подмножестве вещей, специфичных для редактирования текста. У каждого свой, разный фокус.

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

Что я делаю в своей повседневной работе, использовать Visual Studio и vim для редактирования C #. Это работает очень хорошо для меня, и я никогда не вырезал бы одного из них, чтобы полагаться исключительно на другого.

Насколько emacs идет, я не эксперт, но я не думаю, что он может конкурировать с возможностями IDE Eclipse, когда дело доходит до Java (пожалуйста, поправьте меня, если я ошибаюсь). Если вы разрабатываете в lisp, то конечно можно считать отличной средой IDE, но я не думаю, что она поддерживает ту же поддержку Java.

Итак, если вы хотите использовать более мощный текстовый редактор вместе с Eclipse, я бы определенно рекомендовал вам изучить vim или emacs. Но как дополнение, а не как замена . Это может действительно окупиться в долгосрочной перспективе, хотя ни одна из них не имеет особенно легкой кривой обучения:)

Вот приятное длинное чтение о сильных сторонах vim , И вот список некоторых полезных трюков, которые вы можете сделать.

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
6

В принципе, прочитайте это (PDF) чтобы понять, почему Emacs является мощным. Как только вы знаете Lisp, почти тривиально легко написать расширения для него (у меня есть несколько процессов управления версиями и развертываний, написанных через надстройку, которую я написал для себя, называемый employer-mode). Насколько вы упомянули выше,

  • Выделение ошибок без перекомпиляции проекта. Не имеет смысла для всех языков. Вы можете легко интегрировать в него REPLs многих языков. Прямо сейчас у меня есть ruby, python , haskell, common lisp, scheme и erlang все подключены к emacs. Кстати, JavaScript-аддон js2-mode имеет полную инкрементную «компиляцию», поэтому он выделяет для вас такие вещи, как синтаксические ошибки, поэтому это, безусловно, возможно, но не норма
  • Кодовая помощь. есть аддон для вызываемого autocomplete.el, я считаю, проверьте Emacs wiki
  • Рефакторинг. Я предполагаю, что вы имеете в виду «автоматизированный рефакторинг», что не имеет смысла на всех языках. Вероятно, существует для некоторых, но я не знаю.
  • Открытие приветствия hiearchy /Открытие объявления.
  • Полностью интегрирован с контролем источника. Он имеет git-mode, встроенный с Emacs 22.3, не уверен в отношении другого источника управления
  • Отладчик включен. По языковому принципу. Как правило, если он имеет интеграцию с REPL, у него также есть отладчик Emacs, но он не универсальный
  • доступность сторонних плагинов - например, findbugs /checkstyle. не знают об этих конкретных, но для этого существует множество дополнений, из-за того, почему-isn't-this-in-the-base-package-полезно, до абсолютно фривольного

Тем не менее, если вам не нравится Lisp, и вы не собираетесь его изучать, я не могу честно рекомендовать Emacs. Победа, которую вы выберете, - это изучение инструментария и применение этих принципов, чтобы повысить вашу производительность, не получая кучу готовых модов и навязывая их вместе.

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
3

Здесь я вижу два варианта:

  • Вместо этого используйте Nano. Это точно так же, как «Блокнот» в Windows для Linux. Не требуя комбинаций горячих клавиш, просто введите nano somefile.conf, и у вас есть хороший редактор. Вы можете даже добавить подсветка синтаксиса
  • Храните программу локально и синхронизируйте SCP с сервером - я делаю это, когда мне нужно работать на небольшом веб-сайте, но не хватает ресурсов для локального запуска apache. Я просто воспитываю WinSCP, вывожу нужные каталоги и использую «Держать удаленные файлы в актуальном состоянии». Изменения обычно отражаются в секундах
  • Используйте плагин в вашем редакторе /IDE для работы «напрямую» с удаленным файлом. Прежде чем я позаботился об управлении версиями, я просто запустил Notepad ++ (мой предпочтительный редактор) и использовал NppFTP для работы с файлами. NppFTP быстрее, чем опция WinSCP, так как Npp сообщает об этом сразу же после сохранения файла, который сразу же загружается. Однако, как я уже сказал, вы потеряли контроль над версиями. Я уверен, что есть плагин для Eclipse, который вы можете использовать

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

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
2

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

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

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
1

Если вы довольны Eclipse, не переключайтесь.

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

Если ваш проект /компания использует исключительно Eclipse, не переключайтесь.

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

См. (тот же) вопрос в SO: https://stackoverflow.com/questions/1346820/what-are-the-efficiencies-afforded-by-emacs-or-vim-vs-eclipse

В ответ на вопрос: «Используют ли люди, которые его используют, на сложных объектно-ориентированных проектах в крупных организациях?» - Держись за шляпу сытно, но ответ «да». Я работал над проектами с десятками миллионов строк кода, используемыми на критическом пути проектирования самого процессора, на котором работает компьютер, который вы используете, чтобы задать этот вопрос. И люди пытались Eclipse, но обнаружили, что он слишком медленный и неуклюжий (хотя, по общему признанию, мы не использовали Java).

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
1
Оба emacs и vim являются очень настраиваемыми и мощными редакторами, и оба обеспечивают большую производительность, выигрывая, когда основные понятия пойманы.

Vi выигрывает с помощью операций, основанных на множестве. Например, изменение всех экземпляров «foo» на «bar» в определении класса является однострочным.

Emacs не менее эффективен, но вы должны изучить Emacs Lisp, чтобы использовать его в полном объеме.

В любом случае стоит только переключиться, если вы планируете использовать emacs или vi для всего .

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
1

Лучший инструмент (в краткосрочной перспективе) - это тот, с которым вы хорошо владеете.

Люди используют 30-летнюю технологию, потому что они хорошо владеют ею. Они создали свой рабочий процесс и привычки вокруг этих инструментов. Если вы знакомы с современной IDE, например Eclipse, нет никаких оснований для переключения. Умение использовать Eclipse более эффективно - это лучшее вложение вашего времени (например, используйте Mylyn ).

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
1

В настоящее время я пытаюсь переключиться с NetBeans на vim. Обучение vim требует времени и практики, но я вижу его преимущества, позвольте называть их «редакторами GUI» для определенных случаев.

Но, в отличие от вас, я кодирую в основном Ruby, и мне не нужна вся эта черная маска, генерирующая код, автозаполнение, рефакторинг-мой код, которые предлагают NetBeans и Eclipse. Если бы я кодировал Java или C #, я бы, конечно же, не пытался вообще переключаться.

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
1

Как давний пользователь emacs, я нахожу emacs вполне комфортным в качестве среды для редактирования и разработки (и в некоторой степени он также интегрируется с процессом сборки, контролем версий, быстрым контекстно-зависимым поиском и т. п., поэтому я предположим, что он квалифицирует его как «IDE»).

Мне также очень удобно пользоваться vi и vi-подобными редакторами (я начал использовать ed, потому что я думал, что emacs слишком сложный, в ретроспективе это обратное, но это дало мне прочную основу для будущего обучения VI). Я использую vi в первую очередь для «небольших быстрых изменений», прежде всего на удаленных компьютерах, где emacs не установлен.

Для вашего «я иногда нуждаюсь в ssh на сервере и беспорядок с файлами конфигурации, для этого я использую сценарий vi», я бы рекомендовал небольшой набор команд и некоторые общие соображения вокруг vi:

  • Vi не является модальным, он имеет команды «a» (добавить), «A» (добавить в конец строки), «i» (вставить) и «I» (вставить в начале строки), принимая текст для вставки в качестве аргумента и сигнализации «end-of-command» с Esc
  • h, j, k и l - клавиши перемещения. Он МОЖЕТ работать с помощью клавиш со стрелками, но поскольку типичный стиль VT «Я - клавиша со стрелкой» начинается с Esc, это нарушит команду ввода текста, о которой вы не думаете.
  • : linenum переводит вас в строку linenum , строка 1 - это самая верхняя строка, а строка $ - самая нижняя
  • . - команда «повторить последнюю команду» (см. первую маркерную точку).

Не нужно больше часа или двух играть с vi, чтобы быть в «Я могу уверенно редактировать текстовый файл, но я не могу быть эффективным с ним», и это так хорошо, как вы, вероятно, должны быть. В противном случае любой редактор, который не увлекается автоматическим преобразованием между вкладками и пробелами, должен быть «достаточно хорош» для ваших целей. Если Eclipse установлен на all на ваших удаленных серверах, я не вижу в этом большой проблемы.

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
1

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

Если я пишу Java или C # (и я полагаю, что в этой категории есть другие языки). У них есть такие большие библиотеки stuff с длинными именами, что получение I от использования Emacs полностью потеряно, пытаясь запомнить все.

Я настоятельно рекомендую вам попробовать vim и /или Emacs. Но вы, скорее всего, вернетесь в Eclipse для Java.

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
0

У меня нет проблем с доступными редакторами UNIX, но я только когда-либо использую их в знак протеста. Нет, как я уже сказал, потому что у меня проблема с ними, но потому что, если мне нужно их использовать, это означает, что процесс развертывания каким-то образом не хватает.

Это, вероятно, заслуживает большего контекста: я работаю над крупномасштабными решениями для электронной коммерции, все, что управляет работой наших систем, генерируется процессом сборки /развертывания одним щелчком мыши. У нас есть массив тестовых сред, поэтому в любой момент времени я могу внести изменения через Eclipse, проверить его на cvs и запустить build /deploy, чтобы доказать, что мое исправление работает. Так что, если я взламываю «vi», то это потому, что мы не можем дождаться 1-часового оборота развертывания или потому, что развертывание не распространяется на файлы, которые я редактирую, и их необходимо расширить, чтобы сделать поэтому (в противном случае я буду взломать vi в следующий раз, когда файл, о котором идет речь, нуждается в изменении).

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
0

Лично обе программы подталкивают меня к стене. Проблема с Eclipse заключается в том, что он медленный, как сопли, когда вы работаете над крупным проектом, и именно тогда, когда он не делает «индексацию DGLP» или что-то еще. хотите обновить свой репозиторий? получил 15 минут? О, и как насчет этого изящного трюка, где вы Ctrl-C какой-то текст, а затем Ctrl-P, где-то, но вместо того, чтобы идти туда, куда вы хотите, он открывает совершенно другой файл и проделывает что-то еще, и вам остается интересно, wtf был там в первую очередь. О, и я упомянул о работе с eclipse над большим проектом над vpn? практически невозможно.

Как и для vim, его приятно и быстро, предполагая, что вы знаете множество совершенно бессмысленных комбинаций клавиш, чтобы заставить его сделать что-то и удачи, если случайно попали в какой-то неизвестный режим. Кроме того, с vim вы в значительной степени должны знать всю структуру своего проекта в своей голове, чтобы открыть правильные файлы. Главное преимущество Vim заключается в том, что теоретически вы можете создавать код быстрее, потому что все его ключи, но на самом деле мне все равно, сколько текста я пишу, это не объем текста, который имеет значение для его качества и часто качество код требует пристального внимания к десяткам файлов в течение нескольких часов подряд, пока вы не выясните, какая именно правильная вещь набирать (что обычно очень короткое).

Я хочу, чтобы кто-то написал программу командной строки, например vim, которая фактически имеет структуру каталогов, такую ​​как eclipse на стороне, или что-то, что вы могли бы развернуть /свернуть и открыть файлы. Кто-нибудь знает что-нибудь подобное?

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48
-1

Если вас не устраивает VIM или EMACS, вы можете посмотреть на этом компьютере для других текстовых редакторов. Там может быть какой-то вкус nedit или gedit или что-то, что вы можете использовать, которые будут иметь более знакомые команды (ctrl x, c, v и s делают то, что вы ожидаете, например).

У вас, вероятно, более двух вариантов на вашем дистрибутиве, стоит посмотреть.

ответил Dainius 18 Jpm1000000pmWed, 18 Jan 2012 19:29:48 +040012 2012, 19:29:48

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

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

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