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


31

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

Мені при нагоді потрібно вступити в сервер і возитися з конфігураційними файлами; для цього я використовую vi, і це болить мене. Мені потрібно встати веб-сторінку з переліком синтаксису / команд: натиснути клавішу escape, а потім зірочку, три рази обернутись, і текст буде введено на два рядки над курсором . Для мене це так неінтуїтивно , і я уявляю кожного, хто виріс наприкінці вісімдесятих дев'яностих.

Ось основні причини, на які я вважаю затемнення геніальним (і я припускаю інших IDE), і не переходимо на emacs та / або vim.

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

Один із аргументів, які я чую, це те, що за допомогою emacs / vim ви можете створювати власні плагіни - добре, але ви можете це робити і в затемненні. Але вам не потрібно, оскільки все вже є! Начебто сказати, що купуй цю напівпобудовану машину, решту ти можеш побудувати самостійно.

Чому люди використовують emacs / vim? Чи реально люди, які використовують його, працюють над складними об'єктно-орієнтованими проектами у великих організаціях?

Які причини переходу на vim / emacs. Як би зросла моя продуктивність, якщо я перейшов?


1
Чи можете ви перефразувати заголовок? Це не має ніякого сенсу.
Vetle

@vetler краще?
NimChimpsky

5
Зазвичай я використовую nano, а не vimпросто тому, що я не використовую CLI досить часто, щоб засвоїти всі vimкоманди. Якщо ви використовуєте його лише зрідка, я б подумав, що щось просте, як nanoби слугувало вам краще ...
Дін Гардінг

Набагато краще! :)
Vetle

Дуже давно, коли я був представлений в Unix, я спробував і vi, і emacs, і я закінчив використовувати emacs, тому що vi просто здавався таким дивим і неочевидним (я маю на увазі, коли додавання тексту до кінця рядка громіздке, щось точно напевно). І режими командування / редагування vi не працювали особисто для мене.
Скізз

Відповіді:


36

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


5
@NimChimpsky Я використовую emacs для деяких мов, таких як C, ruby, python, haskell. Але для Java або C #, я вважаю, краще використовувати IDE. У своїй роботі я використовую C # з VS. Просто використовуйте інструмент, який, на вашу думку, є більш продуктивним.
hiena

8
Смішно, що якщо ви запитаєте когось "Навіщо вчитися vi", відповідь ЗАВЖДИ "колись, можливо, вам доведеться увійти на віддалений сервер і відредагувати якийсь конфігураційний файл". Цікаво, скільки розробників насправді довелося це робити.
Олівер Вайлер

2
PS: Я особисто люблю vi, але не тому, що вважаю, що це найкращий редактор у світі, а тому, що це змушує мене почувати себе вище :-).
Олівер Вайлер

2
@Helper метод: я, безумовно, повинен робити це раз у раз! Якщо ви строго не працюєте в середовищі MS, це може відбутися.
користувач281377

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

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, Eclipse робить мене набагато продуктивнішим, і саме це враховує.

Ні, я не думаю, що вам слід перемикатися , але вам слід приділити пару годин, щоб засвоїти основи vim, щоб не потрібно було більше шукати його.


Не могли б ви детальніше зупинитися на тому, що можна зробити швидше в Eclipse, ніж у Emacs?
Гордон Густафсон

1
У наш час я вже не думаю, що затемнення - це добре. Але він досі перемагає emacs, коли йдеться про рефакторинг і те, що він розуміє семантику мови програмування, що робить пошук тощо простішим.
Мартін Вікман

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. Ось список цікавих хитрощів, які ви можете зробити.


6

В основному, прочитайте це (PDF), щоб побачити, чому Emacs є потужним. Як тільки ви знаєте Ліпп, писати розширення для нього майже тривіально просто (у мене є декілька робочих процесів управління та розгортання сценаріїв за допомогою додатку, який я написав для себе під назвоюemployer-mode ). Що стосується того, що ви перераховуєте вище;

  • Помилка підкреслення, не потрібно перекомпілювати проект. Не має сенсу для всіх мов. Ви можете легко інтегрувати REPLsв нього багато мов. Прямо зараз, у мене є ruby, python, haskell, common lisp, schemeі erlangвсе закручений в Emacs. Між іншим, у додатку JavaScript js2-modeє повна додаткова "компіляція", тому він виділяє такі речі, як синтаксичні помилки для вас, тому це, безумовно, можливо, але не норма
  • Довідка з коду. Є аддон для того, що називається autocomplete.el, я вважаю, перевірте вікі Emacs
  • Рефакторинг. Я припускаю, що ви маєте на увазі "автоматизований рефакторинг", який має сенс не у всіх мовах. Можливо, для когось існує, але я не знаю.
  • Відкриття виклику при відкритті / Декларація про відкриття.
  • Повністю інтегрований з управлінням джерелом. Він має 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 ген конструктори / деструктори та ін. Саме такий інструмент дозволяє використовувати масштабну розширюваність Emacs.
Кріс

3

Тут я бачу два варіанти:

  • Використовуйте замість Nano - це точно як Блокнот у Windows для Linux. Не вимагаючи комбінацій гарячих клавіш, ви просто набираєте текст nano somefile.confі у вас є гарний редактор. Можна навіть додати підсвічування синтаксису
  • Тримайте програму на локальному рівні та синхронізуйте через SCP з сервером - я це роблю, коли мені потрібно працювати на невеликому веб-сайті, але не вистачає ресурсів для запуску апачі локально. Я просто підношу 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-efficiences-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 вимагає часу та практики, але я бачу його переваги перед, давайте назвемо їх, «редакторами графічного інтерфейсу» для певних випадків.

Але, на відміну від вас, я кодую в основному Ruby, і мені не потрібна вся ця чорна магія для генерування коду, автоматичного завершення, рефактор-мій код, яку пропонують NetBeans та Eclipse. Якби я кодував Java або C #, я б точно не намагався переключитися взагалі.


Я користувався vim роками. Це дуже добре працює з Ruby, і як тільки ви встанете на криву навчання, вам сподобається ефективність.
Ларрі Коулман

1

Як давній користувач emacs, я вважаю, що emacs є досить комфортним як середовище редагування та розробки (і певною мірою він також інтегрується з процесом збирання, керування версіями, швидким контекстно-пошуковим пошуком тощо), тому я думаю, що це відповідає це як "IDE").

Мені також реально зручно користуватися vi та подібними до редакторів (я почав користуватися редактором, тому що вважав, що emacs є надто складним; в ретроспективі це назад, але це дало мені міцну основу для подальшого вивчення vi). Я використовую vi в основному для "невеликих швидких редагувань", в першу чергу на віддалених машинах, де emacs не встановлений.

Для вашого сценарію "Мені при нагоді потрібно запустити сервер і заплутатися з файлами конфігурації; для цього я використовую vi" сценарій, я рекомендую невеликий набір команд та деякі загальні думки навколо vi:

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

Потрібно зайняти більше години-двох, щоб грати з vi, щоб бути в "Я можу впевнено редагувати текстовий файл, але я не можу бути ефективним з ним", і це так добре, як вам, мабуть, потрібно буде . Якщо цього не зробити, будь-який редактор, який не підробляє питання про автоматичне перетворення між вкладками та пробілами, повинен бути "достатньо хорошим" для ваших цілей. Якщо Eclipse встановлений на всіх віддалених серверах, я не вважаю це великою проблемою.


Чому голосування вниз?
Ватін

1

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

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

Я звичайно рекомендую спробувати vim та / або Emacs. Але ви, швидше за все, повернетеся в Eclipse для Java.


0

Я не маю жодних проблем з різними доступними редакторами UNIX, але я їх коли-небудь використовую під протестом. Не, як я кажу, тому що у мене є проблема з ними, а тому, що якщо мені доведеться їх використовувати, це означає, що наш процес розгортання якимось чином не вистачає.

Це, мабуть, заслуговує на трохи більше контексту: я працюю над широкомасштабними рішеннями електронної комерції, все, що регулює роботу наших систем, генерується процесом збирання / розгортання в один клік. У нас є масив тестових середовищ, тому в будь-який момент часу я можу внести зміни через Eclipse, перевірити це на cvs та запустити збірку / розгортання, щоб довести, що моя помилка спрацювала. Так що - якщо я ламаю "vi", то це тому, що ми не можемо чекати 1-годинної розгортання розгортання або через те, що розгортання не охоплює файли, які я редагую, і для цього потрібно продовжити. так (інакше я буду зламати in vi, коли наступний файл потребує зміни).


0

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

Що стосується vim, його приємне і швидке припущення, що ви знаєте безліч абсолютно безглуздих комбінацій клавіш, щоб змусити щось робити і везувати, якщо випадково опинитесь у якомусь невідомому режимі. Крім того, з vim вам доведеться знати свою структуру каталогів у голові, щоб відкрити правильні файли. Основна перевага Vim полягає в тому, що теоретично ви можете створювати код швидше, тому що всі його клавіші, але насправді мені байдуже, скільки тексту я пишу, це не об'єм тексту, який має значення якості коду, а часто якість код вимагає придивлятися до десятків файлів протягом години, поки ви не з'ясуєте правильну річ, яку потрібно ввести (як правило, це дуже коротко).

Мені б хотілося, щоб хтось написав програму командного рядка, наприклад, vim, яка насправді має структуру каталогів, як затемнення збоку, або щось, з чого можна розширити / згортати та відкривати файли. Хтось знає щось подібне?


3
Ви можете просто відкрити каталог у буфері, і він перелічить файли в каталозі. Наведіть курсор на файл, який ви бажаєте відредагувати, натисніть кнопку return, і він відкриє цей файл. Різноманітні плагіни vim (наприклад, NerdTree) пропонують більш складні функції, такі як автоматичне розділення вікна, відкриття файлу в одній панелі та збереження дерева каталогів в іншій. Загальна складність із vim та emacs полягає не в тому, що у них відсутні функції, це те, що функції не легко виявити, переглядаючи меню, ви повинні прочитати довідкову документацію.
Чарльз Е. Грант

Остання частина вашої відповіді має бути ще одним питанням.
Матьє

коли ви використовуєте твір «безглуздо» для опису комбінацій клавіш, ви виходите як аматор. Також ботанік робить те, що ви описуєте, підключаючись до vim.
Arunav Sanyal

-1

Якщо вас не влаштовує VIM або EMACS, ви можете подивитися на цій машині інші текстові редактори. Ви можете використовувати якийсь аромат nedit або gedit або щось подібне, яке матиме більш знайомі команди (ctrl x, c, v і s робити те, що ви очікували, наприклад).

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.