Emacs ir Vim yra du plačiausiai naudojami teksto redaktoriai
„Vim“ naudoja redagavimo režimus - dažniausiai komandinis režimas ir įterpimo režimas. „Vim“ siekia sumažinti klavišų, kuriuos vartotojas turi paspausti, skaičių, nes vi, kuriuo remiasi Vim, buvo sukurtas naudoti lėtuose terminaluose..
„Emacs“ naudoja modifikatorių klavišus, kad įjungtų sparčiuosius klavišus, kurie dažnai apima kelių mygtukų paspaudimą vienu metu vienai funkcijai. Šis „Emacs“ aspektas dažnai kritikuojamas.
„Emacs“ lengviau išmokti, nes ji turi natūralesnę sąsają (vartotojams, pažįstamiems su GUI pagrįstais teksto redaktoriais). Kadangi „Vim“ yra skirtingi redagavimo režimai, pradedantiesiems yra šiek tiek sunkiau išmokti.
„Vim“ entuziastai tvirtina, kad vartotojui susipažinus su „Vim“ redagavimo režimais ir komandomis, tai leidžia žymiai padidinti produktyvumą ir efektyvumą. Failo redagavimas paprastai yra greitesnis naudojant „Vim“ nei su „Emacs“, nes sąmoningai „Vim“ palaiko sąsają. Pavyzdžiui, žymeklio judėjimą galima valdyti per H, J, K, ir L klavišus normalus režimas. Tai reiškia, kad vartotojo rankoms nereikia palikti „namų eilutės“ padėties, o tai padidina efektyvumą, tačiau tai kainuoja pridėti pridėtines išlaidas, nes norint pasirinkti judėjimą ar teksto redagavimą, reikia perjungti režimą. „Emacs“ (su numatytąja konfigūracija) vartotojas perkelia žymeklį naudodamas klavišus „Ctrl-B“ arba „Ctrl-F“, o tai gali sulėtinti naujoko vartotoją, nes reikia paspausti du klavišus. „Emacs“ produktyvumo ir efektyvumo pagerėjimas priklauso nuo redagavimo aplinkos konfigūracijos, o ne nuo paties redaktoriaus.
„Vim“ yra lengvesnis nei „Emacs“ ir sunaudoja mažiau atminties. „Vim“ gynėjai kritikuoja „Emacs“ išteklių vartojimą, liežuviu į skruostą siūlydami, kad „Emacs“ reiškia „aštuoniasdešimt megabaitų ir nuolat keičiamasi“..
Tačiau naudojant „gnuclient“ galima paleisti vieną nuolatinį „Emacs“ procesą, kuris vienu metu gali palaikyti kelis klientus. Tai pagreitina paleidimo laiką ir sumažina bendrą atminties sunaudojimą, panaikindami tarpą tarp „Emacs“ ir „Vim“.
Nors „Vim“ ir „Emacs“ palaiko papildinius, kurie pagerina jų funkcionalumą, „Emacs“ palaiko daug daugiau redaktoriaus aplinkos pritaikymo galimybių. Tai, be abejonės, yra svarbiausia emacs požymis ir yra atsakingas už didžiąją dalį emacs atsidavusių žmonių.
Emacs gali būti pratęstas elisp, o „Vim“ turi savo vidinę scenarijų kalbą ir palaiko kitų programavimo kalbų naudojimą įskiepių kūrimui.
„Emacs“ gali būti išplėsta skrendant iš naujo apibrėžiant įmontuotas „elisp“ funkcijas, įvedant naują apibrėžimą į „Emacs“ arba įkeliant „elisp“ failus. Susijusių pakeitimų grupės vadinamos „režimais“ ir jas galima lengvai sukonfigūruoti taip, kad jos automatiškai būtų naudojamos tam tikrų tipų failams (buferiams). Taigi nesunku apibrėžti režimus skirtingoms programavimo kalboms ar sistemoms, tokioms kaip „lisp mode“ ar „Ruby on Rails mode“ ar „PHP mode“. Šie režimai gali tiesiogiai modifikuoti net pagrindinį „Emacs“ elgesį, automatiškai suformatuoti ar spalvinti tekstą ir pridėti standartinį šabloną arba „kaitvietės“ tekstą, pavyzdžiui, funkcijų deklaracijas ir uždarymus. Taigi programuotojai mano, kad „Emacs“ yra kur kas labiau pritaikomi pagal jų konkrečius reikalavimus nei „Vim“. Vis dėlto kai kuriems programuotojams gali atrodyti, kad „Vim“ galiausiai labiau tinka jų programavimo aplinkai dėl jo vienodai pritaikomo ir visiškai modiško veikimo.
„Vim“ taip pat galima išplėsti skrydžio metu, naudojant komandų režimą. Komandų režimas leidžia nustatyti konfigūracijos parinktis, apibrėžti funkcijas ir sudaryti makrokomandas. Tiesą sakant, „Vim“ konfigūracijos failai yra tik komandos, kurias galima įvesti komandų režimu.
Tiek „Vim“, tiek „Emacs“ turi grafines vartotojo sąsajas. Beveik visi meniu elementai abiejų redaktorių grafinėje sąsajoje yra paprasčiausias būdas valdyti šaukinių komandą arba greitai konfigūruoti. Redaktorių GUI praktiškai neteikia jokių papildomų funkcijų, išskyrus tas, kurias galima rasti CLI (komandinės eilutės sąsaja).
„Emacs“ savo GUI naudoja „XDisplay“ arba „gtk2“. „Vim“, be „gtk2“, gali naudoti ir daugybę kitų GUI bibliotekų, tokių kaip „gtk“, „gnome“, „gnome2“, „motyvas“, „athena“ ir „neXtaw“..