Emacs og Vim er de to mest udbredte tekstredaktører på
Vim bruger redigeringstilstande - oftest kommandotilstand og indsæt tilstand. Vim sigter mod at minimere antallet af tastetryk, som en bruger skal trykke på, fordi vi, som Vim bygger på, var designet til at blive brugt over langsomme terminaler.
Emacs bruger modificeringstaster til at aktivere genveje, som ofte involverer at trykke på flere taster samtidigt for en enkelt funktion. Dette aspekt af Emacs kritiseres ofte.
Emacs er lettere at lære, da det har en mere naturlig grænseflade (for brugere, der er bekendt med GUI-baserede tekstredigerere). Da Vim har forskellige redigeringsmetoder, synes begynderne det er lidt sværere at lære.
Vim-entusiaster hævder, at når en bruger bliver bekendt med redigeringsmetoder og kommandoer for Vim, muliggør det langt større produktivitet og effektivitet. Filredigering er normalt hurtigere med Vim end med Emacs på grund af Vims målrettet hastighedsdrevne interface. For eksempel kan markørbevægelsen styres gennem H, J, K, og L nøgler i normal tilstand. Dette betyder, at brugerens hænder ikke behøver at forlade positionen "hjemme række", hvilket forbedrer effektiviteten, men kommer til prisen for at tilføje overhead, da skift af tilstand er påkrævet for at vælge mellem bevægelse og tekstredigering. I Emacs (med standardkonfigurationen) bevæger brugeren markøren med Ctrl-B- eller Ctrl-F-genveje, hvilket muligvis bremser begynderbrugeren, da der skal trykkes på to taster. Produktivitets- og effektivitetsforbedringer i Emacs afhænger af konfigurationen af redigeringsmiljøet snarere end af selve editoren.
Vim er lettere end Emacs og bruger mindre hukommelse. Vim-talsmænd kritiserer Emacs 'ressourceforbrug med tungen i kinden-antydningen om, at Emacs står for "Eighty Megabytes and Constently Swapping".
Imidlertid kan med gnuclient køres en enkelt vedvarende Emacs-proces, der kan understøtte flere klienter samtidigt. Dette fremskynder opstartstid og reducerer den samlede hukommelsesforbrug, hvilket lukker afstanden mellem Emacs og Vim.
Mens både Vim og Emacs understøtter plugins, der forbedrer deres funktionalitet, understøtter Emacs meget mere tilpasning af editormiljøet. Dette er uden tvivl det vigtigste træk ved emacs og er ansvarlig for meget af emacs 'dedikerede følgende.
Emacs kan udvides i oversigt, mens Vim har sit eget interne scriptingsprog og understøtter brug af andre programmeringssprog til plugin-udvikling.
Emacs kan udvides undervejs ved at omdefinere indbyggede elisp-funktioner, enten ved at skrive den nye definition i Emacs eller ved at indlæse elisp-filer. Grupper af relaterede ændringer kaldes "tilstande" og kan let konfigureres til automatisk at blive brugt til bestemte filtyper (buffere). Så det er nemt at definere tilstande til forskellige programmeringssprog eller rammer, såsom "lisp mode" eller "Ruby on Rails mode" eller "PHP mode". Disse tilstande kan direkte ændre selv kerneadfærd for Emacs, automatisk formatere eller farvelægge tekst og tilføje standardskabelon eller "kedelplade" -tekst, såsom funktionserklæringer og lukninger. Så programmører finder Emacs at være langt mere tilpasselig efter deres særlige krav end Vim. Alligevel kan nogle programmerere synes, at Vim i sidste ende er bedre egnet til deres programmeringsmiljø på grund af det lige så tilpasselige og fuldt modale betjening.
Vim kan også udvides mens du bruger kommandotilstand. Kommandotilstanden gør det muligt at indstille konfigurationsindstillinger, definere funktioner og udføre makroer. Faktisk er konfigurationsfiler til Vim bare kommandoer, der kan indtastes via kommandotilstand.
Både Vim og Emacs har grafiske brugergrænseflader. Stort set alle menupunkter på den grafiske grænseflade for begge redaktører er simpelthen måder at håndtere en genvejskommando eller hurtig konfiguration på. GUI'erne til redigererne leverer næsten ingen ekstra funktioner ud over dem, der er tilgængelige i CLI (kommandolinjegrænseflade)
Emacs bruger XDisplay eller gtk2 til dets GUI. Vim kan bruge mange andre GUI-biblioteker, såsom gtk, gnome, gnome2, motiv, athena og neXtaw, ud over gtk2.