Як би ви порівняли цих редакторів? Які плюси і мінуси у кожного?
[ Примітка ] На це не мають відповідати ті, хто "ненавидить одного і любить іншого", або ті, хто не використовував обох.
Як би ви порівняли цих редакторів? Які плюси і мінуси у кожного?
[ Примітка ] На це не мають відповідати ті, хто "ненавидить одного і любить іншого", або ті, хто не використовував обох.
Відповіді:
Я використовую обидва, хоча, якби мені довелося вибрати одну, я знаю, яку саме вибрати. Все ж я спробую зробити об’єктивне порівняння з кількох питань.
Доступні скрізь? Якщо ви професійний системний адміністратор, який працює з системами Unix, або користувач живлення на вбудованих пристроях (маршрутизатори, смартфони з Busybox,…), вам потрібно знати vi (не Vim), оскільки він доступний у всіх системах Unix і на більшості Unix-подібні системи, будь то настільні, серверні або вбудовані. Для звичайного користувача цей аргумент не має значення: Emacs легко доступний для кожної ОС настільних ПК та серверів, і оскільки він підтримує віддалене редагування, його достатньо в будь-якому разі мати на настільному комп'ютері.
Здутий? Колись Emacs жартівливо виступав за "Вісім мегабайт і постійно міняючись". Зараз на моїй машині Google Chrome потрібно приблизно стільки оперативної пам’яті на вкладку, скільки Emacs для 100 відкритих файлів, і я навіть не згадую Firefox. У XXI столітті розквіт Emacs - лише міф.
Особливість роздуття також не є проблемою. Якщо ви не використовуєте його, вам не потрібно знати, що він є. Функції Emacs не відволікаються, коли ви не користуєтесь ними, а документація дуже організована.
Час запуску : прихильники Vi (m) скаржаться на час запуску Emacs. Так, Emacs запускається повільно, але це не велика справа: ви запускаєте Emacs один раз на сеанс, потім підключаєтесь до запущеного процесу emacsclient
. Тож повільний запуск Emacs - це переважно міф.
Є один виняток - це коли ви входите на віддалену машину і хочете там відредагувати файл. Запуск віддаленого Emacs (як правило) повільніше, ніж запуск віддаленого Vim. У деяких ситуаціях ви можете тримати Emacs, що працює у екрані. Ви також можете редагувати віддалені файли зсередини Emacs, але це порушує потік, якщо ви перебуваєте на ssh сесії в терміналі. (Оскільки XEmacs 21 або GNU Emacs 23, ви можете відкрити вікно Emacs із запущеного екземпляра X всередині терміналу.)
Повертаючи таблиці, я помітив, що Vim потребує значно більшого завантаження, ніж Emacs ( vim -u /dev/null
проти emacs -q
). Справді, це було на дивній платформі (Cygwin).
Початкова крива навчання: Це залежить від людини до людини. Графік Майкла Мрозека змусив мене посміхнутися. Серйозно я погоджуюся з тим, що крива навчання Vim починається крутіше, крутіше, ніж будь-який інший редактор, хоча це можна зменшити за допомогою gvim.
Оскільки я розвіяв пару міфів про Emacs, дозвольте мені розвіяти vi міф: модальний редактор не важкий або болісний у використанні. Це вимагає трохи звички, але через деякий час це почувається дуже природно. Якби я переробляв vi (m), я б точно дотримувався режимів.
Асимптотична крива навчання: і Vim, і Emacs мають багато можливостей, і ви продовжуватимете відкривати нові після багатьох років використання.
Продуктивність : Це надзвичайно важка тема. Прихильники vi (m) стверджують, що ви можете зробити майже все, не виходячи з домашнього ряду, і це робить вас більш ефективними, коли вам це найбільше потрібно. Прихильники Emacs підтверджують, що Emacs має багато команд, які часто не використовуються, тому не вимагайте прив'язки ключів, але чорт зручніше, коли вам це потрібно ( обов'язкова посилання xkcd ).
Моя особиста думка полягає в тому, що Emacs в кінцевому рахунку виграє, якщо ви не маєте можливості відключення тексту (і навіть тоді ви можете налаштувати Emacs, щоб вимагати лише послідовності ключів, а не комбінації, наприклад Ctrl+ літери). Клавіші домашнього ряду приємні, але вони часто не є великою виграшею, оскільки вам доведеться перемикати режими. Я не думаю, що щось може зробити Vim значно ефективніше, ніж Emacs, тоді як навпаки вірно.
Настроюваність : Обидва редактори можна програмувати, і існує велика кількість доступних пакетів для обох. Однак Vim - редактор з мовою макросів; Emacs - це редактор, написаний у Ліспі з деякими спеціальними примітивами. Emacs виграє видовищно, коли ви намагаєтесь зробити щось, про що автори просто не думали. Це відбувається не щодня, але воно накопичується роками.
Більше, ніж редактор : Vim - редактор. Emacs - це не просто редактор: це також IDE, файловий менеджер, емулятор терміналів, веб-браузер, поштовий клієнт, клієнт новин ... Чи це хороша річ чи погана справа - це питання для обговорення. Але ви можете використовувати Emacs як простий редактор (див. "Роздуття функції" вище).
Як IDE : І Vim, і Emacs підтримують безліч мов програмування та інших текстових форматів. Окрім основ, таких як синтаксичне забарвлення та автоматичне відступ, обидва мають розширені функції IDE, такі як перегляд посилань на код та документацію, допоміжні вставки та рефакторинг, інтегрований контроль версій та можливість ініціювати компіляцію та перейти до першої помилки.
Один домен, де Emacs звичайно кращий за Vim, - це взаємодія з асинхронними підпроцесами. Ось тоді ви починаєте довгу компіляцію і хочете зробити щось інше в тому ж екземплярі редактора, поки компілятор працює. Або коли ви хочете взаємодіяти з циклом Read-eval-print - Emacs справді світить на це, Vim пропонує лише незграбні хаки. Тим не менш, новий форк vim, Neovim , виявив, це виправив і реалізував інші різні виправлення помилок, не реалізовані в stock vim.
Я опублікую те, що, на мою думку, є головними перевагами кожного:
Emacs має значно більше розширень, які дозволяють виконувати завдання, пов'язані лише з нечіткими текстовими редакторами, як-от перегляд файлової системи чи змішання з контролем версій, а також розширення, що ніяк не пов’язані з текстовим редактором, як читання RSS-каналів. Якщо ви хочете, щоб середовище, а не текстовий редактор, Emacs стане кращим за Vim. Я також думаю, що Emacs набагато простіше вчитися, незважаючи на те, що дехто з них би ви повірили:
Зокрема, я думаю, що користувач Emacs-початківця буде швидшим, ніж користувач-початківець Vim
З іншого боку, Вім незаперечно швидший. Здається, що це основна частина аргументу, але, на мою думку, взагалі немає жодної конкуренції; Я вважаю себе вільним користувачем Emacs, і я не збігаюся з парою людей, яких я знаю, що мають рівні знання про Vim. Проблема полягає в тому, що кількість людей, які володіють достатньою майстерністю Vim, щоб бути такою швидкою, неймовірно мала (з ~ 30 людей, з якими регулярно спілкуюсь, які використовують Vim, я думаю, що лише один надзвичайно хороший у цьому). Існує великий розрив між можливим збільшенням швидкості і фактичним збільшенням швидкості, яке ви досягаєте; Користувачі Emacs будуть майже такі ж швидкі, як і 99% користувачів Vim, і (як я вже говорив у розділі Emacs) починаючи користувачі Emacs, ймовірно, будуть швидшими, ніж користувачі Vim
Існує vi
у всіх системах Unix (або майже), однак цього не можна сказати про будь-який інший редактор. Це причина №1, імо, навчитися та ознайомитись vi
(зверніть увагу на "vi" не "vim"). Я ніколи не бачив, щоб Emacs був доступний в установці за замовчуванням.
Я не кажу, що не використовуйте Emacs або це єдина причина використовувати Vim, але коли ви хочете мати можливість використовувати системи Unix, які не є вашими ..., vi
це частина універсальної мови.
vim
користувач, але мені часто важко користуватися vi
, швидше за все, завдяки ключу END (vim підтримує його, але vi не, або, принаймні, не за замовчуванням)
nano
я закінчую цілою купою ijkloOah у своєму файлі ..., поки я не зрозумію, що не можу використовувати їх для навігації. Я не використовую клавіші зі стрілками для навігації.
vim
:)
Я думаю, вони обидва приголомшливі. Я думаю, що можна зробити все, що ви можете собі уявити, і вони обидва настільки налаштовані, що до того моменту, коли ви закінчите їх налаштовувати, вони обидва є саме такими, якими ви хочете, щоб вони були, ні більше, ні менше.
Emacs виділяється мені тим, що трохи ближче (хоча все ще не відповідає) стандартам ISO / IEC щодо зручності використання та послідовності користувацьких інтерфейсів, а значить, не грає стільки хитрощів з вашими "інстинктами" щодо цього vim. Життя інстинктів, які ви виробили в роботі з іншими програмами, не буде працювати проти вас.
Vim - це зовсім інша модель, і багато в чому вона сама по собі перевершує те, що значно менше покладається на послідовності Cntrl / Alt, а натомість лише на свої режими, що дозволяє тримати ваші труднощі на домашньому ряду та вводити текст швидше. Але vim практично унікальний, і якщо ви не встановите дуже незвичайне супроводжуюче програмне забезпечення (наприклад, Vimperator, Jumanji / Zathura тощо), інстинкти, які ви розвиваєте, працюючи з vim, не перейдуть на інші програми і навпаки. Це сказав, що я влаштувався на vim сам. Рано чи пізно вам доведеться влаштуватися на одне, на краще чи гірше, оскільки обоє важко освоїти.
Я використовую обидва на регулярній основі. Я розглядаю Emacs як "живий" редактор, тоді як Vim використовую для швидких одноразових завдань. Поверхово, Emacs набагато більш роздутий, ніж Vim, і тому насправді не так зручно "стріляти", як Vim, але я також вважаю, що філософії інтерфейсу користувача від однієї до іншої підтримують цю парадигму. Emacs набагато більш побудований, щоб утримати вас всередині, роблячи речі приємними та зручними, тому вам не доведеться залишати, тоді як vim набагато більше "Unixy" і вважає себе частиною більшого пояса інструментів.
Багато людей тікають з Emacs через його велику залежність від бакі-бітів , але це досить глупа причина для мене. Справжня влада Emacs над Vim - це налаштування, а сила Viper тощо - це справді не проблема. Безумовно, Vim-Script забезпечує свій власний рівень налаштування, і якщо, скажімо, ваша улюблена мова програмування не була забезпечена відповідним підсвічувачем синтаксису, ви, безумовно, можете підготувати її, але Emacs в кінцевому підсумку є власною хостинговою машиною lisp, і в в кінці ви можете зробити набагато більше, набагато більше поспішаючи з цим. В Vim просто немає таких інструментів, як gnus або org-mode . У двох словах, Emacs - це не просто редактор, це практично боговицька операційна система.
Для маніпулювання текстом я б сказав, що вони точно нарівні.
Я покладу свої $ 0,02, оскільки я витратив досить багато років на використання emacs та XEmacs, а потім перейшов до vim. Справедливо кажучи, я фактично використовував vi зовсім небагато в 1990-1992 роках, тому я був знайомий з його користувальницьким інтерфейсом.
Emacs
Emacs описується як система "lisp", яку щойно використовували для написання редактора, і в цьому є зерно правди. Ви можете реалізувати майже все, що завгодно, в Elisp, якщо ви хочете витратити свій час, щоб зрозуміти навколишнє середовище. Я не можу сказати, що я коли-небудь це добре знав, але я все-таки епатажу. Emacs та Xemacs не повністю сумісні на цьому рівні, тому сторонні сценарії можуть працювати на одному, а не на іншому.
Було помічено, що RMS та деякі інші видатні хакери Emacs повинні були відмовитися від програмування через проблеми з OOS, де Білл Джой, Брам Муленаар та інші інші світильники досі перебувають у ньому. Emacs важко на ваших рожевих пальцях.
Emacs є набагато більш католицькою системою, ніж vi, і розглядається як канонічний приклад розробки програмного забезпечення . Поряд з Netscape, це один із внесків jwz у доведення цього закону.
Однією унікальною річчю, яку я колись робив з xemacs, було те, щоб він працював на машині та відкривав сеанс x на xterminal (фактично старий перероблений Sun 3/60) в іншій кімнаті проти того ж буфера на тому ж запущеному екземплярі.
Плюси: розширюваний, потужніший за будь-який інший відомий людині редактор, зріла інтеграція з майже всіма основними засобами програмування вільного програмного забезпечення.
Мінуси: сумнівна ергономіка, елісп не легко вивчити.
Вим
Застереження - я перейшов від використання emacs до vim близько 10 років тому, і я звично використовую vim для Windows та Unix / Linux систем.
У Vi та його нащадків є дуже хороший інструмент макро клавіатури для автоматизації редагування завдань. Заклад сценаріїв у vim не такий складний, як elisp, але ви можете побудувати його з підтримкою Python, Tcl, Perl та, можливо, деяких інших систем. Я лише час від часу писав сценарії (поза файлами .vimrc) для vim.
Vim має менший слід, ніж emacs, але це не так вже й багато.
Документація та онлайн-допомога Vim досить хороші. У Emacs є досить хороша он-лайн документація, але я не думаю, що вона настільки вичерпна, як vim.
Vim успадковує вигадливий модальний користувальницький інтерфейс vi, але має можливість вести себе як модний редактор зараз, оскільки ви можете переходити у режимі вставки. У Windows він може вести себе так само, як у програмі Windows.
Плюси: Хороший інструмент макро клавіатури, приємно хороша розширюваність та сценарій, але не такий хороший, як emacs. Vim або vi-редактори є стандартними для більшості, якщо не всіх Unix або Linux-дистрибутивів загального призначення. Можливо, краща ергономіка.
Мінуси: Модальний користувальницький інтерфейс здається дивним для людей, які звикли до інтерфейсів Windows. Менше проблем із vim цими днями.
Я зазвичай використовую Vim, але вони обидва чудові редактори.
Навчитися використовувати vi було неприємно, але я пережив це і навчився подобатися. Мої найстрашніші моменти були, коли була увімкнена клавіша блокування шапки Ви можете спробувати з gVim, але однією з найбільших переваг з vi та Emacs є можливість робити акуратні речі, зберігаючи руки на клавіатурі, і gVim, ймовірно, буде тримати вас за допомогою миші. (Навчання грати в недоброякісні ігри одночасно дало мені практику з клавішами переміщення курсору, але змусило мене іноді намагатися рухатись по діагоналі в документах.)
Emacs, ймовірно, більш доступний. Це без режиму, і ви не збираєтеся нагнітати себе, натискаючи клавішу блокування ковпачків. Ідея управління редактором шляхом введення літер за допомогою клавіші управління не повинна бути надто чужою для сучасних користувачів енергоносіїв, хоча дійсні клавіші для виконання дій будуть здаватися дикими і довільними для типового користувача Windows / Mac OS X. Знову ж таки, версії, які дозволяють користуватися мишею, вам не сприяють у довгостроковій перспективі.
Для ефективного використання обох потрібен певний рівень знань. На відміну від, скажімо, Блокнота, ви не можете просто сісти та редагувати.
І те й інше можна налаштувати, хоча для моїх розширень для написання грошей у тому ж Lisp редактор, який написаний, робить більш легким. (Emacs, як правило, розповсюджується, насправді не є редактором. Це середовище Lisp, призначене для обробки тексту, з великою кількістю попередньо написаного програмного забезпечення, включаючи редактор. Отже, жарт "Emacs робить гідну оболонку, але вона може використовувати кращий редактор. ")
Я зазвичай використовую Vim, оскільки після обширних тренувань мені стає легше. Це може бути пов’язано з перевагами в системі режимів, коли величезна кількість команд доступна за допомогою одного пальця біля домашніх рядків, або "синдром дитячої качки", що дуже стосується редакторів: як тільки ви навчитесь хорошому, ви, як правило, дотримуєтесь йому.
Ви не помилитесь, використовуючи і те, і інше.
Основна причина, по якій я не використовую vi / vim, полягає в тому, що вона модальна. Основна причина, по якій я використовую vi - це те, що він доступний майже скрізь.
Я думаю, що коментар "vim is modal" вище невірний. Vim має команди. Ви можете зробити «11aNow - час для всіх добрих людей ..», і в кінцевому підсумку вийде 11 однакових нових рядків тексту у вашому файлі. Це команда, а не режим. Але насправді є дуже основна відмінність команд Vim від команд Emacs. Я не зовсім впевнений, що можу це описати, але Ерік Фішер включив редагування ліній у стилі Emacs у драйвер TTY 10+ років тому і опублікував документ про це:
http://www.usenix.org/event/usenix99/full_papers/fischer/fischer.pdf
Він виявив, що редагування ліній у стилях Emacs принципово відрізняється від стилю vi.
Таким чином, Emacs має перевагу в тому, що багато інших речей (bash, gnuplot, zsh, ksh деякі інші, які я не можу придумати вгорі голови) все в кінцевому підсумку реалізують редагування ліній в стилі Emacs.
Слід зазначити, що я особисто весь час користуюся Vim. Я лише дуже випадковий користувач Emacs.
set -o vi
в моїй думці bash
або zsh
не надто важко запустити (або поставити у rc
файл).
gnuplot
, що Postgresql psql
, MySQL mysql
та безліч інших інтерфейсів за замовчуванням працюють у режимі Emacs більш-менш. Якби тільки Oracle міг sqlplus
зробити редагування командного рядка ... ні, ні. Це було б надто багато, щоб запитати у великої корпорації. У них є тенденції до наслідування!
inputrc
це робиться для інструментів оболонки, але потім я ловлюсь на півсекунди, коли j
не перебираюсь, скажімо, на Mendeley Desktop після переходу на нього з терміналу, і їх кілька разів запитували про прив’язку vim. На жаль, не вдається охопити все та мати стійке оточення.
mysql(1)
, psql(1)
, gnuplot(1)
, і python(1)
, perlconsole(1)
, lftp(1)
, smbclient(1)
і в самому справі багато інтерактивних програм були стурбовані прив'язками для редагування рядка. Усі ці програми лише використовують GNU Readline , а режим за замовчуванням для GNU Readline - це (не дивно), як GNU Emacs. set editing-mode vi
у вашому ~/.inputrc
і вуале - всі ці інструменти мають vi-подібні клавіші.
Оскільки це не було чітко зазначено, я додам, що немає кращого середовища програмування (Lisp у вікні, SLIME тощо), ніж дещо модифікований розподіл Emacs. Про всі мої потреби в програмуванні (99%) піклуються з Vim, але для всіх цих бібліотек і процедур Lisp, про які я пишу, я повинен запустити Emacs, щоб зробити все продуктивно.
Я використовую Vim / gVim.
Раніше я використовував Emacs, але я виявив, що gVim, як правило, працює швидше на повільних машинах, плюс, завдяки вимогам POSIX, vi доступний майже скрізь.
Під час використання Vim або gVim я дуже сильно використовую мишку, я думаю, що підтримка в цьому чудова.
Я почав використовувати Emacs, тому що це було легше використовувати для початківців користувачів. Я знайшов використання нано чомусь досить схильним до помилок, і в якийсь момент я зрозумів, що мені набагато комфортніше використовувати vi.
Зараз це суміш. Я також дуже часто використовую Eclipse та gedit. Однак Vim досі є моїм улюбленим і найбільш використовуваним редактором.
Я використовую і gVim, і Emacs досить добре, щоб бути продуктивними, хоча я не знаю жодного з них. Одне, що я можу сказати з упевненістю, - це те, що Vim та gVim працюють швидше на моєму ноутбуці Windows 7 (який я маю використовувати на роботі). У Emacs у вікні Windows є дивна звичка "робити паузу" на хвилину і не реагувати, навіть продовжуючи приймати введення з клавіатури, перш ніж поспішно виплювати все накопичене в буфер клавіатури. Це не відбувається в Mac OS або Linux. Тим не менш, я часто користуюся Vim або gVim на всіх платформах, тому мені не доведеться зупинятися і думати про те, яким редактором я користуюся та налаштувати. Це означає, що в чисто * nix середовищі я, мабуть, залишатись з Emacs, тому що моє редагування без моделей трохи природніше.
Підсумок: на мою думку, обидва редактори достатньо потужні, щоб вирішити будь-які потреби редагування тексту. Вибір має ґрунтуватися на практичних міркуваннях (наприклад, специфіці впровадження платформи) та стилі роботи.
Основна відмінність Emacs від Vim - це ергономічність. Існує синдром зап'ястного каналу, КТС, як відомо. Emacs дуже "небезпечний", якщо у вас є CTS і провокує CTS. Vim - ні, про цю різницю можна прочитати в багатьох місцях. Наприклад, у Vim ви можете редагувати текст лише одним пальцем. В Emacs - не можна :)
Я використовую vi
/ nvi
(НЕ vim
), тому що це просто і ненав'язливо.
vim
так любить звукові сигнали, що її важче і дещо непомітно відключити. Мені довелося фізично
вийняти внутрішній комп'ютерний динамік, перш ніж врешті-решт виявили, що поховано-реф про те, як це зробити :)
set vb t_vb=
Також я не використовую синтаксичне забарвлення, сірий поверх чорного кольору для мене найкрасивіший.
І, можливо, я занадто дурний, щоб зрозуміти, що emacs
єдиним трьома комбінаціями клавіш, які я пам’ятаю, є CTRL-ALT-DEL.
"Які плюси і мінуси Vim і Emacs?" - га!
Я переважно залишаю плюси іншим.
Мінуси обох у тому, що вони обидві старої школи. Я використовував, ймовірно, 50 різних редакторів протягом багатьох років, від редакторів базових ліній, до надшвидких редакторів, що кодуються з монтажем (VEDIT для одного), до фантазійних редакторів графічного інтерфейсу, які краще, ніж інші. Я навіть написав власний спеціальний редактор під назвою ForthStar і адаптував його для редагування дерева btrieve листя, з безліччю індексів для потужного пошуку, як миттєво знайти останні листки, які я щойно відредагував, або швидко знайти компоненти коду, або листя батьків або дітей.
Я думаю, що і vi, і emacs - це більше релігія, ніж м'язи. Творчі розуми, які їх побудували, значною мірою рухалися, і новій підтримці не вистачає сміливості та вміння їх переосмислити.
Так, Emacs може зробити багато, але це сповільнюється lisp, красивою і тепер значною мірою застарілою мовою.
Обидва застрягли у складних розкладках клавіатури. Emacs міг трохи налаштуватись на користувача, визначивши, що тут є клавіша Alt, а не антикварна мета. І як WordStar визнає, що тримати CA CB прямо від CA B під час набору швидкості не варто. Краще просто мати один, який запускається будь-яким клавішем комбо. Так, ви можете змінити прив’язки ключів, але потім, який ви будете безладдя пізніше.
Vi розумний, але йому не вистачає потужного пошуку та заміни, як у Notepad ++, який показує те, що знайдено, дозволяє розширити його та вибірково застосовувати його в кольорі, лише згадуючи про одне нововведення.
Практично будь-який інший графічний інтерфейс GUI в наші дні дозволяє масштабувати колесо миші. Графічний інтерфейс Emacs, здається, не працює. А де приємне привітання, як у Кейт?
Моя улюблена розкладка клавіатури протягом багатьох років була курсорним діамантом Wordstar. Принаймні це було легко навчитися і одержати сенс негайно. Мене найбільше ненавидів WordPerfect, який збільшив складність і, здається, дещо базувався на emacs.
Давайте визначимо, що в більшості країн світу графічний інтерфейс є сьогодні. І подобається це чи ні, редактори тексту дещо застрягли у своєму віці.
Я думаю, що було б краще мати універсальний редактор, який міг би легко переключатися між emacs, vi, wordstar або будь-якими ключовими макетами, і не втрачати більш потужні команди, які він може запропонувати. Справжнім програмістам доводиться використовувати різноманітні засоби редагування. Чому б не мати редактора, який би відповідав нашим потребам, щоб виконати роботу, а не змусити нас до їхнього способу робити?
M-! emacs RET
Це як пошук в Google за "google"