it-swarm-eu.dev

Jaké jsou výhody a nevýhody Vima a Emacse?

Jak byste tyto editory porovnali? Jaké jsou výhody a nevýhody každého z nich?

[note] Na to nemají odpovídat ti, kteří „nenávidí jednoho a milují druhého“ nebo ti, kteří oba nepoužili.

388
John Berryman

Používám oba, i když kdybych si musel vybrat jeden, vím, který z nich bych si vybral. Přesto se pokusím provést objektivní srovnání v několika otázkách.

  • K dispozici všude? Pokud jste profesionální správce systému, který pracuje se systémy Unix, nebo mocný uživatel na zabudovaných zařízeních (směrovače, smartphony s Busyboxem,…) ), musíte znát vi (nikoli Vim), protože je k dispozici na všech unixových systémech a většině unixových systémů, ať už stolních, serverových nebo vestavěných. Pro běžného uživatele je tento argument irelevantní: Emacs je snadno dostupný pro každý operační systém desktop/server a protože podporuje vzdálené úpravy, stačí jej mít na svém stolním počítači.

  • Zafarbené? Emacs kdysi vtipně stál za „Osm megabajtů a neustále se vyměňuje“. Právě teď, v mém počítači, Google Chrome potřebuje asi tolik RAM na kartu, jako Emacs pro 100 otevřených souborů) a ani nebudu zmiňovat Firefox V 21. století je Emacs bloat jen mýtus.

    Feature bloat není problém. Pokud ji nepoužíváte, nemusíte vědět, že je tam. Funkce Emacs brání tomu, když je nepoužíváte a dokumentace je velmi přehledná.

  • Čas spuštění : Vi (m) zastánci si stěžují na čas spuštění Emacsu. Ano, Emacs se pomalu rozběhne, ale to není velký problém: Emacs spustíte jednou za relaci a poté se připojíte k běžícímu procesu pomocí emacsclient. Takže Emacsův pomalý start je většinou mýtus.

    Existuje jedna výjimka, kdy se přihlásíte ke vzdálenému počítači a chcete tam upravit soubor. Spuštění vzdáleného Emacsu je (obvykle) pomalejší než spuštění vzdáleného Vimu. V některých situacích můžete nechat Emacs běžet uvnitř obrazovky. Vzdálené soubory můžete také upravovat v rámci Emacsu, ale přerušuje to tok, pokud jste v relaci ssh v terminálu. (Protože XEmacs 21 nebo GNU Emacs 23, můžete otevřít okno Emacs z spuštěné instance X uvnitř terminálu.)

    Když jsem otočil stoly, všiml jsem si, že Vim bere zřetelně déle než Emacs (vim -u /dev/null vs. emacs -q). Nepochybně to bylo na podivné platformě (Cygwin).

  • Počáteční křivka učení: Toto se liší od osoby k člověku. graf Michaela Mrozka se mi zachechtal. Vážně souhlasím s tím, že Vimova křivka učení začíná strmě, strměji než kterýkoli jiný editor, i když to lze zmenšit pomocí gvim.

    Protože jsem rozptýlil několik mýtů o Emacsu, dovolte mi rozptýlit mýtus o vi: použití modálního editoru není těžké ani bolestivé. Trvá trochu zvyk, ale po chvíli se cítí velmi přirozeně. Kdybych měl přepracovat vi (m), určitě bych si ty režimy ponechal.

  • Asymptotické křivky učení: Vim i Emacs mají mnoho funkcí a po letech používání budete objevovat nové.

  • Produktivita : Toto je nesmírně náročné téma. Zastánci vi (m) tvrdí, že dokážete dělat téměř všechno, aniž byste museli opustit domovskou řadu, a díky tomu budete efektivnější, když to budete nejvíce potřebovat. Zastánci Emacsu retortují, že Emacs má mnoho příkazů, které se často nepoužívají, takže nezaručují vázání klíče, ale jsou zatraceně pohodlné, když je potřebujete ( povinná reference xkcd ).
    Můj osobní názor je, že Emacs nakonec vyhraje, pokud nemáte psací postižení (a dokonce pak můžete nakonfigurovat Emacs tak, aby vyžadoval pouze klíčové sekvence a ne kombinace jako Ctrl+ dopis). Klávesy z domácí řady jsou pěkné, ale často to není tak velká výhra, protože musíte přepínat režimy. Nemyslím si, že existuje něco, co by Vim mohl udělat výrazně efektivněji než Emacs, zatímco konverzace je pravdivá.

  • Přizpůsobitelnost : Oba editory jsou programovatelné a pro oba existuje rozsáhlé množství dostupných balíčků. Vim je však editor s jazykem makra; Emacs je editor napsaný v LISP s některými ad hoc primitivy. Emacs zvítězí skvěle, když se pokusíte udělat něco, na co autoři prostě nemysleli. To se nestává každý den, ale v průběhu let se hromadí.

  • Víc než editor : Vim je editor. Emacs není jen editor: je to také IDE, správce souborů, emulátor terminálu, webový prohlížeč, poštovní klient, zpravodajský klient, ... Ať už je to dobrá věc nebo špatná věc, je věcí diskuse. Emacs však můžete použít jako pouhý editor (viz výše uvedený text „Bloky funkcí“).

  • Jako IDE : Vim i Emacs mají podporu mnoha programovacích jazyků a dalších textových formátů. Kromě základů, jako je syntaktické zbarvení a automatické odsazení, mají obě pokročilé funkce IDE funkce, jako je vyhledávání křížových odkazů kódu a dokumentace, asistované vkládání a refaktorování, integrovaná kontrola verzí a schopnost iniciovat kompilace a přejít na první chybu.

    Jednou doménou, kde je Emacs lepší než Vim, je interakce s asynchronní podprocesy. To je, když začnete dlouhou kompilaci a chcete dělat něco jiného uvnitř stejné instance editoru, zatímco kompilátor se chrlí. Nebo když chcete komunikovat s Read-eval-print loop - Emacs to opravdu svítí, Vim má jen neohrabané hacky. Přesto se ukázalo, že nová vidlice vim, Neovim to vyřešila a implementovala další různé opravy chyb, které nebyly implementovány do skladu vim.

Budu zveřejňovat, co považuji za hlavní výhody každého z nich:


Emacs má mnohem více rozšíření, která vám umožní provádět úkoly, které souvisejí pouze s textovým editorem, jako je procházení souborového systému nebo zasílání zpráv s kontrolou verzí, a rozšíření, která v žádném případě nesouvisí s textovým editorem, jako je čtení RSS kanálů. Pokud chcete místo textového editoru prostředí, bude Emacs lepší než Vim. Také si myslím, že se Emacs naučí mnohem snadněji, navzdory tomu, čemu by někteří věřili:

Editor learning curve comic

Zejména si myslím, že začínající uživatel Emacs bude rychlejší než začínající uživatel Vim


Na druhé straně je Vim nepopiratelně rychlejší. Vypadá to, že toto je hlavní část argumentu, ale podle mého názoru neexistuje žádná soutěž vůbec; Považuji se za plynulého uživatele Emacsu a nejsem žádný zápas pro pár lidí, které znám, kteří mají stejnou znalost Vim. Problém je, že počet lidí, kteří mají dostatečné zvládnutí Vim, aby byli tak rychle, je neuvěřitelně malý (z ~ 30 lidí, se kterými pravidelně mluvím, kteří používají Vim, myslím, že pouze jeden je v tom výjimečně dobrý). Existuje velký rozdíl mezi možným nárůstem rychlosti a skutečným zvýšením rychlosti dosáhnete; Uživatelé Emacsu budou téměř stejně rychle jako 99% uživatelů Vimu a (jak jsem řekl v sekci Emacs) začátečníci Emacsu budou pravděpodobně rychlejší než začínající uživatelé Vimu

272
Michael Mrozek

Na každém unixovém systému (nebo téměř) je k dispozici vi, ale o žádném jiném editoru to nemůžete říct. Toto je první důvod, proč se učit a seznámit se s vi (všimněte si 'vi', nikoli 'vim'). Nikdy jsem neviděl, že Emacs bude k dispozici ve výchozí instalaci.

Neříkám, že nepoužíváte Emacs, nebo to je jediný důvod, proč používat Vim, ale když chcete mít možnost používat unixové systémy, které nejsou vaše ... vi je součástí univerzální Jazyk.

83
xenoterracide

Myslím, že jsou oba úžasní. Myslím, že jeden může udělat jen s čímkoli, co si dokážete představit, a oba jsou tak přizpůsobitelní, že v době, kdy je dokončíte přizpůsobení, jsou oba přesně tím, čím chcete, aby byli, nic víc ani méně.

Emacs mi vyniká tím, že jsem o něco blíže (i když stále nesplňuje) standardům ISO/IEC použitelnosti a konzistence uživatelských rozhraní, a proto nehraje tolik triků s vašimi „instinkty“ o tom, co vim dělá. Životnost instinktů, které jste vyvinuli při práci s jinými programy, nebude proti vám fungovat.

Vim je zcela odlišný model a v mnoha ohledech je sám o sobě lepší, pokud se spoléhá mnohem méně na sekvence Cntrl/Alt, a místo toho jen na jeho režimy, což vám umožní udržet si těžkosti v domácí řadě a psaní rychlejší. Ale vim je prakticky jedinečný, a pokud nenainstalujete nějaký neobvyklý doprovodný software (např. Vimperator, Jumanji/Zathura atd.), Instinkty, se kterými pracujete s vim, nepřecházejí do jiných programů a naopak. To znamená, že jsem se usadil sám. Musíš se s některým vyrovnat dříve nebo později, k lepšímu nebo horšímu, protože je těžké zvládnout oba.

24
frabjous

Pravidelně používám obojí. Emacs vidím jako "live in" editor, zatímco já používám Vima pro rychlé, jednorázové úkoly. Povrchně je Emacs mnohem nafouklejší než Vim, a tak opravdu není tak pohodlné „rozhýbat se“ jako Vim, ale také zjistím, že filozofie uživatelského rozhraní z jednoho na druhého podporují toto paradigma. Emacs je mnohem více postavený, aby vás udržel uvnitř, takže věci jsou pěkné a pohodlné, takže nemusíte opustit, zatímco vim je mnohem více „Unixy“ a vidí se jako součást většího bezpečnostního pásu.

Mnoho lidí uprchlo z Emacsu kvůli jeho velké závislosti na bucky bitech , ale to je pro mě docela hloupý důvod. Skutečná síla, kterou má Emacs nad Vimem, je přizpůsobitelnost as výkonem Viper atd. To opravdu není problém. Vim-Script určitě poskytuje svou vlastní úroveň přizpůsobení, a pokud například řeknete, že váš oblíbený programovací jazyk nebyl vybaven vhodným zvýrazňovačem syntaxe, můžete ho určitě uvařit, ale Emacs je nakonec samoobslužný stroj LISP a na konci s tím můžete dělat mnohem, mnohem víc. Ve Vimu prostě nejsou takové nástroje jako gnus nebo org-mode , abychom jmenovali alespoň některé. Stručně řečeno, Emacs není jen editor, je to prakticky bůh zatracený operační systém.

Pro manipulaci s textem bych řekl, že jsou přesně na par.

21
Eli Frey

Vložím své 0,02 dolaru, protože jsem strávil docela pár let pomocí emaců a XEmaců a pak jsem se přesunul k vimu. Abych byl spravedlivý, ve skutečnosti jsem používal vi docela dost kolem 1990-1992, takže jsem byl obeznámen s jeho uživatelským rozhraním.

Emacs

  • Emacs byl popisován jako systém LISP, který se právě použil k napsání editoru, a v tom je zrno pravdy. Můžete implementovat téměř cokoli, co chcete, do elisp, pokud vám záleží na porozumění prostředí. Nemohu říci, že jsem to někdy tak dobře věděl, ale příležitostně jsem dělal věci v hávu. Emacs a Xemacs nejsou na této úrovni úplně kompatibilní, takže skripty třetích stran mohou běžet na jednom, ale ne na druhém.

  • Bylo pozorováno, že RMS a někteří další významní hackeři Emacsu museli odejít z programování kvůli problémům s OOS, kde je stále v provozu Bill Joy, Bram Moolenaar a různí další světelné zdroje. Emacs je tvrdě na vaše malíčky.

  • Emacs je mnohem katoličtější systém než vi a je vnímán jako kanonický příklad softwarová obálka . Spolu s Netscape je to jeden z jwz's příspěvků k prokázání tohoto zákona.

Jedinou jedinečnou věcí, kterou jsem kdysi udělal s xemacs, bylo to, že jsem ho nechal běžet na počítači a otevřel x relaci na xterminálu (vlastně starý repurposed Sun 3/60) v jiné místnosti proti stejnému bufferu na stejné spuštěné instanci.

Pros: - Rozšiřitelný, výkonnější než jakýkoli jiný editor známý člověku, zralá integrace s téměř všemi hlavními bezplatnými softwarovými programovacími nástroji.

Nevýhody: - pochybná ergonomie, elisp není snadné se naučit.

Vim

Disclamer - Přibližně před 10 lety jsem začal používat emacs na vim a obvykle používám vim na systémech Windows a Unix/Linux.

  • Vi a jeho potomci mají velmi dobré zařízení pro makra pro automatizaci úprav. Skriptovací zařízení v vim není tak sofistikované jako elisp, ale můžete ho postavit s podporou Pythonu, Tcl, Perlu a možná i některých dalších systémů. Pro vim jsem psal pouze příležitostně skripty (mimo soubory .vimrc).

  • Vim má menší rozměry než emacs, ale v dnešní době to není moc.

  • Dokumentace Vim a on-line nápověda jsou celkem dobré. Emacs má docela dobrou on-line dokumentaci, ale nemyslím si, že je tak komplexní jako vim.

  • Vim zdědí nepředvídatelné modální uživatelské rozhraní vi, ale má nyní možnost chovat se podobně jako editor bez modů, protože se můžete pohybovat v režimu vkládání. Na Windows se může chovat docela podobně jako Windows aplikace.

Klady: - Dobré zázemí pro makro, skvěle rozšiřitelnost a skriptování, ale ne tak dobré jako emacs. Vim nebo vi-odvozené editory jsou standardní ve většině, ne-li všech unixových nebo obecných linuxových distribucích. Pravděpodobně lepší ergonomie.

Nevýhody: Modální uživatelské rozhraní je pro lidi zvyklé na Windows UI zvláštní. Méně problém s vim v těchto dnech.

Normálně používám Vima, ale oba jsou skvělí editoři.

Naučit se používat vi bylo ošklivé, ale já jsem se přes to dostal a naučil se mi to líbit. Moje nejvíce frustrující chvíle byly, když byl zapnut zámek zámku. Můžete zkusit s gVim, ale jednou z největších výhod u vi a Emacs je schopnost dělat úhledné věci při zachování rukou na klávesnici a gVim vás pravděpodobně bude držet pomocí myši. (Naučit se hrát roguelike hry současně mi dal praxi s klávesami pro pohyb kurzoru, ale přiměl mě, abych se někdy pokusil v dokumentech pohybovat diagonálně.)

Emacs je pravděpodobně přístupnější. Je to nemodální a vy se nehodláte zasáhnout zasunutím klíče zámku čepic. Myšlenka ovládání editoru zadáváním písmen s ovládacím klíčem dolů by neměla být pro moderní uživatele moci příliš cizí, i když skutečné klíče k tomu, co se děje, se budou běžnému uživateli Windows/Mac OS X zdát divoké a svévolné. Verze, které vám umožní používat myš, vám zase z dlouhodobého hlediska přinášejí několik výhod.

Obě vyžadují určitou úroveň odbornosti, aby mohly být použity efektivně. Na rozdíl od řekněme, Poznámkový blok, nemůžete si jen sednout a upravovat.

Oba jsou konfigurovatelné, i když pro rozšíření o psaní peněz ve stejném LISP je editor napsán v plynulejším prostředí. (Emacs, jak je normálně distribuován, není ve skutečnosti editorem. Je to prostředí LISP přizpůsobené pro zpracování textu, se spoustou předpřipraveného softwaru, včetně editoru. Proto vtip „Emacs dělá slušnou Shell, ale mohl by použít lepší editor. “)

Normálně používám Vima, protože po rozsáhlém tréninku je to jednodušší. Může to být způsobeno výhodami v režimu režimu, kdy je k dispozici obrovské množství příkazů pomocí jednoho prstu v blízkosti domácích řádků, nebo „syndromu dětské kachny“, což se velmi týká editorů: jakmile se naučíte dobrého, obvykle se budete držet k tomu.

Nebudete špatně používat ani jeden.

15
David Thornley

Náhodou jsem si myslel, že výše uvedený komentář „vim is modal“ je nesprávný. Vim má příkazy. Můžete udělat "11aNow je čas pro všechny dobré muže .." a skončit s 11 identickými novými řádky textu v souboru. To je příkaz, ne režim. Ve skutečnosti však existuje velmi základní rozdíl mezi příkazy Vim a Emacs. Nejsem si úplně jistý, jestli to můžu popsat, ale Eric Fischer včlenil editaci čar ve stylu Emacs do ovladače TTY před 10 a více lety a dostal o něm publikovaný příspěvek:

http://www.usenix.org/event/usenix99/full_papers/fischer/fischer.pdf

Zjistil, že editace stylů Emacsu byla zásadně odlišná od vi stylu.

Takže Emacs má tu výhodu, že mnoho dalších věcí (bash, gnuplot, zsh, ksh některé další, na které si nemůžu vzpomenout z horní části hlavy), všechny nakonec implementují úpravy čar ve stylu Emacs.

Měl bych poznamenat, že osobně používám Vima po celou dobu. Jsem jen velmi občasný uživatel Emacsu.

9
Bruce Ediger

Protože to nebylo výslovně uvedeno, dodám, že neexistuje lepší programovací prostředí (LISP v krabici, SLIME atd.) Než mírně modifikovaná distribuce Emacsu. O všechny mé programovací potřeby (99%) se postará zvenčí Vim, ale pro všechny ty knihovny a rutiny LISP, které píšu, musím vypálit Emacs, abych udělal něco produktivního.

9
Shamster

Hlavním důvodem, proč nepoužívám vi/vim, je to, že je to modální. Hlavním důvodem, proč používám vi, je to, že je k dispozici téměř všude.

Používám Vim/gVim.

Používal jsem Emacs, ale zjistil jsem, že gVim obecně pracuje rychleji na pomalejších strojích a navíc, díky požadavku POSIX, vi je k dispozici téměř všude.

Když používám Vim nebo gVim, používám myš hodně, myslím, že podpora je skvělá.

Začal jsem používat Emacs, protože to bylo jednodušší pro začínajícího uživatele. Zjistil jsem, že použití nano je z nějakého důvodu docela náchylné k chybám a v určitém okamžiku jsem si uvědomil, že jsem s použitím vi mnohem pohodlnější.

Právě teď je to směs. Používám Eclipse a gedit také docela často. Vim je však stále můj oblíbený a nejpoužívanější editor.

8
polemon

Používám gVim i Emacs natolik dobře, abych byl produktivní, i když v tom ani nejsem odborník. Jedna věc, kterou mohu s jistotou říci, je, že Vim a gVim běží rychleji na mém notebooku Windows 7 (který musím použít v práci). Emacs, na krabici Windows, má zvláštní zvyk „pozastavit se“ až na minutu a přestat reagovat, i když nadále přijímá vstup z klávesnice, než vyplivne všechno nahromaděné ve vyrovnávací paměti klávesnice ve spěchu. V systému Mac OS nebo Linux k tomu nedochází. Nicméně na většině platforem se většinu času setkávám s Vim nebo gVim, takže se nemusím zastavovat a přemýšlet o tom, který editor používám a upravuji. To znamená, že v čistě * nixovém prostředí bych asi zůstal u Emacsu, protože pro mě je nemodální editace o něco přirozenější.

Sečteno a podtrženo: podle mého názoru jsou oba editoři dostatečně výkonní, aby zvládli veškeré potřeby úpravy textu. Výběr by měl být založen na praktických úvahách (jako jsou specifika implementace platformy) a na pracovním stylu.

7
Wing Flanagan

Hlavní rozdíl mezi Emacsem a Vimem je ergonomický. Jak víte, existuje syndrom karpálního tunelu, CTS. Emacs je velmi „nebezpečný“, pokud máte CTS a provokuje CTS. Vim - ne, o tomto rozdílu si můžete přečíst na mnoha místech. Například ve Vimu můžete upravovat text pouze jedním prstem. V Emacsu - nemůžete :)

3
Paul