Ако Emacs и Vim се бият до смърт, кой ще спечели?

[Отказ от отговорност]: По никакъв начин не съм експерт по нито един от тези инструменти, имам достатъчно опит и с двата, до степен да имам стабилно мнение и за двата.

За тези от вас, които не знаят, от години се води разгорещен дебат (война) между привържениците на Vim и поддръжниците на Emacs, това не са единствените съперници, има поддръжници на Nano, които се намесват в дебат също и много други, но това са най-големите бегачи според мен.

Възможно е да има няколко от вас (садисти), които все още обичат да използват ed. А за тези от вас, които не го правят, ви предизвиквам да го използвате за един ден, без да хвърляте клавиатурата си.

И ако някога срещнете някой, който ви каже, че Vim и Emacs са крачка назад, тогава му отправете същото предизвикателство.

Вим

Този инструмент е изключително мощен текстов редактор в коригираните ръце и изключително ефективен генератор на произволни знаци в грешните ръце (:wq е да излезете от FYI).

Заден план

Vim (Vi IMproved), както подсказва заглавието, е подобрение на текстовия редактор Vi, редактор, предназначен за операционната система Unix. Първоначално пуснат през 1991 г., той спечели популярност поради това колко лек беше. Той е популярен сред техническите специалисти, тъй като е инсталиран по подразбиране на повечето базирани на Unix операционни системи и може да се използва чрез командния ред.

Първо впечатление

Първата мисъл, която влезе в главата ми, когато видях, че Vim се използва, беше „Това изглежда сложно“, изглеждаше като някакво тайнствено магьосничество, което не разбирах. Следващата мисъл беше „За бога, това е ефективно!“.

Взех Vim за първи път преди няколко години, когато се сдвоих с колега разработчик, който се кълнеше във Vim, той летеше около файлове, използвайки всички преки пътища, сякаш дишаше, по-бързо, отколкото бих могъл да използвам който и да е графичен текстов редактор.

Най-обезсърчаващата част от това за мен беше как ще редактирам ефективно текст, когато не мога да си спомня преките пътища, така че той ме насочи към https://vim-adventures.com/ онлайн игра, в която можете итеративно да научите преки пътища, бих препоръчал това за хора, които искат да използват Vim, но се нуждаят от няколко нива на сложност, за да бъдат обяснени.

След като научих основите и в този момент редактирах файлове с около една десета от скоростта, която обикновено бих, но се учех.

Интуитивност

За мен, след като се справих с основната функционалност, контролите бяха логични и имаха смисъл, имахте клавишите за движение като w, които ще ви преместят с дума напред. Можете да повторите каквото и да е, като поставите префикс номер, така че 2w да премести 2 думи. И командите могат да приемат клавиш за движение като параметър, така че d е за изтриване, следователно d2w ще изтрие 2 думи, интуитивно, нали? След като научите тези неща, можете да започнете да рационализирате всичко, което правите.

След това можете да ги свържете заедно и да обработвате огромни файлове с помощта на макроси.

Пакети

След това се запознах с пакетите, които бяха налични, до голяма степен следвах конфигурацията на моя Сенсей и отразявах пакетите, които имаше, като ги добавях един по един и ги интегрирах в моя работен процес. Започвайки с NerdTree, пакет, който ви помага да преминете през кодова база, без нещо подобно ще трябва да излизате всеки път, когато искате да превключите файл или да запомните относителния път.

Пакетите са леки и лесни за инсталиране, когато имате мениджър като Vundle. Това е толкова просто, колкото да редактирате своя .vimrc и да стартирате :PluginInstall. Изборът е огромен, от теми до „git интеграции“ и начини за „трансформиране на Vim в .Net IDE“. Голяма част от пакетите идват от Tim Pope, разработчика на Pathogen, друг популярен мениджър на пакети за Vim, бих препоръчал да разгледате неговите хранилища и да видите какво можете да намерите за полезно.

Професионалисти:

  • Plug ‘n play — Можете лесно да вземете нечий екземпляр на Vim и да знаете как да го използвате, има риск той да е преназначил няколко неща, но като цяло ще можете да го използвате веднага.
  • Лек — Базовата инсталация за Vim като пакет за Ubuntu е 2,8 MB (приблизително), което е малко в сравнение с Emacs, който е на 100 MB (приблизително).
  • Възможност за персонализиране — Голямата библиотека от пакети означава, че можете да приспособите вашата версия, за да бъде точно такава, каквато ви е необходима.

Наблюдения (може да се разглежда като Pro, може да се разглежда като Con)

  • Изисква изграждане от нулата — Базовата инсталация има малко функции за основно редактиране на текст и вие трябва сами да надграждате върху това, което в крайна сметка завършва с това, че имате екземпляр на Vim, идеално пригоден за вас.

минуси

  • Стръмна крива на обучение — Основното редактиране на текст е трудно в началото и освен ако не знаете как да го използвате на напреднало ниво, няма да редактирате ефективно.

За интересуващите се ето моят (леко остарял) .vimrc.

Emacs

Описван като „Разширяем, адаптивен, „безплатен/свободен“ текстов редактор — и повече.“ акцент върху „и повече“, тъй като Emacs наистина е многофункционален софтуер. Тъй като разширенията могат лесно да се правят с помощта на Lisp, има огромно разнообразие от пакети, достъпни за вас.

Заден план

Emacs, името идва от (Editor MACroS), е текстов редактор с различен „режим“ за всяка задача. Създаден е да бъде бърз и да увеличава продуктивността с преки пътища и макроси, всички написани на Lisp. Въпреки че Vim има поддръжка за задачи, различни от редактиране на текст, Emacs изглежда има по-голям набор от инструменти за други операции.

Първо впечатление

Чух за Emacs чрез моето проучване на Vim, вече бях напълно продаден на идеята да повиша производителността с Vim и отхвърлих Emacs поради силните си пристрастия. Въпреки че все пак го изтеглих и си поиграх накратко с него и веднага забелязах как, извън кутията, имаше много повече пакетирано с него (дали това е добро нещо, трябва да решите вие). За мен това беше плашещо, тъй като с Vim знаех как да използвам всички пакети, защото ги бях инсталирал всички и бях научил за тях поотделно.

Около 2 години използване на Vim по-късно реших, че ще му дам подходящ шанс, чух, че Spacemacs е добро място за начало и е добро за предотвратяване на RSI, той променя фокуса от Alt на интервала, което е по-малко напрежение за достигане. Изучаването на evil-mode на Emacs (eVIl mode, като VIm) беше друг важен фактор защо му дадох по-добър шанс (и го използвам сега), защото можех да използвам предимствата на Vim за редактиране на текст и да го комбинирам с невероятните функции на Emacs.

Интуитивност

Предишният ми опит с Vim беше голямо предимство, така че не мога да говоря за изучаването на Emacs от нулата, но все пак имаше крива на обучение, като например как да управлявам пакети с помощта на MELPA и навигиране на файлове с помощта на HELM и Dired.

Да се ​​научите да използвате Emacs изглеждаше много по-лесно, особено в контекста на макроси, тъй като когато започнете да извиквате един, получавате подсказки кой ключ можете да използвате следващия.

И след като навигирате тук няколко пъти, можете да правите контролите, без да гледате, за мен това е подобрение на Vim, тъй като не е необходимо да търсите как да използвате определени пакети. Освен това има команда за търсене Alt-x или SPC SPC (за Spacemacs), която не само ви позволява да търсите в наличните команди, но ви показва клавишната връзка, за да я използвате следващия път.

Пакети

Има много пакети (слоеве), които са съвместими с Emacs, Spacemacs има „цял набор от слоеве“, от възпроизвеждане на музика до контрол на източника. Те могат да бъдат инсталирани много лесно чрез съответно редактиране на файла .spacemacs, това ще инсталира куп пакети, свързани със слоя.

Моите най-използвани слоеве са:

  • git: който инсталира magit за управление на VCS
  • deft: за бързо водене на бележки (имам своята папка deft в моя Google Drive)
  • helm: за бързо намиране на файлове

Професионалисти:

  • Гъвкавост — Ако искате текстов редактор, в който можете основно да редактирате текст и всичко останало, тогава бих препоръчал Emacs, ако сте го конфигурирали правилно, всъщност няма да е необходимо да напускате Emacs.
  • Макроси — Вероятно любимата ми част от Emacs са макросите, че са логични и че получавате карта на това къде можете да отидете след това.

Наблюдения (може да се разглежда като Pro, може да се разглежда като Con)

  • Богат на функции по подразбиране - когато за първи път инсталирате Emacs, ще имате доста инструменти на една ръка разстояние, без да инсталирате допълнителни пакети, особено ако сте избрали Spacemacs.
  • Отначало обезсърчително – огромното количество възможности ви кара да си мислите „Откъде да започна?“

минуси

  • Стръмна крива на учене — Въпреки че беше по-лесно от моя страна, с предварителни познания за Vim, мисля, че пак би било трудно дори с невероятната макро рамка.

Заключение

За да отговоря на въпроса, според моето най-скромно мнение е, че Emacs излиза на върха, само поради факта, че може да прави същото като Vim и много повече. Най-вероятно ще продължа да използвам Emacs поради тази причина.

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