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


31

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

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

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

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

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

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

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


1
Можете ли вы перефразировать название? Это не имеет никакого смысла.
Vetle

@vetler лучше?
НимЧимпский

5
Я обычно использую nano, а не vimпросто, потому что я не использую CLI достаточно часто, чтобы выучить все vimкоманды. Если бы вы использовали его только изредка, я бы подумал, что что-то простое nanoпоможет вам лучше ...
Дин Хардинг

Намного лучше! :)
Vetle

Давным-давно, когда я познакомился с Unix, я попробовал и vi, и emacs, и в итоге я использовал emacs, потому что vi просто выглядел таким странным и неочевидным (я имею в виду, что добавление текста в конец строки громоздко, что-то не так, конечно). И режимы командования / редактирования vi не работали лично для меня.
Skizz

Ответы:


36

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


5
@NimChimpsky Я использую emacs для некоторых языков, таких как C, ruby, python, haskell. Но для Java или C # я считаю, что лучше использовать IDE. В своей работе я использую C # с VS. Просто используйте инструмент, который вы считаете более продуктивным.
Гиена

8
Забавно, что если вы спросите кого-то «Зачем учиться vi», ответ ВСЕГДА будет «когда-нибудь, возможно, вам придется войти на удаленный сервер и отредактировать какой-нибудь файл конфигурации». Интересно, сколько разработчиков на самом деле должны были это сделать.
Оливер Вейлер

2
PS: лично я люблю vi, но не потому, что считаю его лучшим редактором в мире, а потому, что он заставляет меня чувствовать себя лучше :-).
Оливер Вейлер

2
Метод @Helper: я, конечно, должен делать это время от времени! Если вы не работаете строго в среде MS, это обязательно произойдет.
user281377

1
Чтобы вносить небольшие изменения в конфигурационные файлы, вам, конечно, не нужны Emacs или Vim, хотя они просто хороши, но не стоят усилий, чтобы узнать, где Nano можно использовать так же хорошо.
Anto

39

Emacs и Vi все еще имеют место.

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

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

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

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

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

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

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

Теперь к делу.

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


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

16

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

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

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


Не могли бы вы рассказать, что вы могли бы сделать быстрее в Eclipse, чем в Emacs?
Гордон Густафсон

1
В настоящее время я больше не думаю, что Eclipse - это хорошо. Но он все еще превосходит emacs, когда речь заходит о рефакторинге и о том, что он понимает семантику языка программирования, что облегчает поиск и т.д.
Мартин Уикман,

7

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

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

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

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

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

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

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


6

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

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

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


Потребность в более удобном редакторе Haskell - это мой основной драйвер, пытающийся изучать emacs или vim (мне нравится emacs;)) VS отлично подходит для C #, F # и т. Д., Но отсутствие хороших редакторов для большинства небольших языков делает emacs очень привлекательным как инструмент общего назначения.
CodexArcanum

По крайней мере в Emacs-land CEDET cedet.sourceforge.net (Коллекция инструментов среды разработки Emacs) действительно стирает грань между текстовым редактором и IDE. Это в первую очередь предназначено для C / C ++ (и других) и обеспечивает такие вещи, как браузер проекта (и автоматическая генерация Makefile), автозавершение кода, помощь по коду (показывать прототип функции в курсоре), переход к другому использованию var / function, auto конструкторы / деструкторы gen и т. д. Это огромная расширяемость Emacs, которая позволяет использовать этот инструмент.
Крис

3

Я вижу два варианта здесь:

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

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


+1 для нано, должен любить это.
Дашогун

+1 Нано потрясающий. Если бы я знал это до бесконечных лет боли, используя vi.
Оливер Вейлер

2

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

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


1

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

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

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

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

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

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


1

Как emacs, так и vim - это очень настраиваемые и мощные редакторы, и оба они обеспечивают высокую производительность, как только понимают основные концепции.

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

Emacs не менее мощен, но вы должны изучить Emacs Lisp, чтобы использовать его в полной мере.

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


1

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

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


1

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

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


Я использовал Vim в течение многих лет. Он отлично работает с Ruby, и как только вы доберетесь до кривой обучения, вам понравится эффективность.
Ларри Коулман

1

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

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

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

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

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


Почему отрицательный голос?
Vatine

1

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

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

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


0

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

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


0

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

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

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


3
Вы можете просто открыть каталог в буфере, и он будет перечислять файлы в каталоге. Наведите курсор на файл, который вы хотите отредактировать, нажмите Return, и он откроет этот файл. Разнообразные плагины vim (например, NerdTree) предлагают более сложные функции, такие как автоматическое разбиение окна, открытие файла в одной панели и сохранение дерева каталогов в другой. Общая сложность с vim и emacs заключается не в том, что у них нет функций, а в том, что функции не легко обнаружить при просмотре меню, вам нужно прочитать справочную документацию.
Чарльз Грант

Последняя часть вашего ответа должна быть другим вопросом.
Матье

когда вы используете работу «бессмысленно» для описания сочетаний клавиш, вы начинаете проявлять себя как любитель. Также ботаническое дерево делает то, что вы описываете, когда подключено к vim.
Арунав Саньял

-1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.