Emacs en Vim zijn de twee meest gebruikte teksteditors op Unix- en Unix-achtige systemen. Er is een lange geschiedenis van concurrentie tussen deze twee teksteditors, die enorm geavanceerder zijn dan andere teksteditors op het Unix-platform. Hoewel beide editors dezelfde functionaliteit bieden via hun plug-ins, scripting en sneltoetsen, zijn hun benaderingen enigszins anders.
Emacs | Vim | |
---|---|---|
Voorbeeld van release | 23 | 7.2a.13 (2008-07-04) |
Geschreven in | C en Emacs Lisp | C en Vim-script |
Platform | Cross-platform, inclusief Unix, Linux en Microsoft Windows | Cross-platform, inclusief Unix, Linux en Microsoft Windows |
Beschikbaar in | Engels, Chinees, Frans, Italiaans, Pools, Russisch | Engels, Chinees, Frans, Italiaans, Pools, Russisch |
Type | Teksteditor | Teksteditor |
Licentie | GNU GPL | Gratis software, charityware, GPL-compatibel |
Website | http://www.gnu.org/software/emacs/ | http://www.vim.org/ |
Introductie (van Wikipedia) | Emacs is een klasse van feature-rijke teksteditors, meestal gekenmerkt door hun uitbreidbaarheid. Emacs heeft meer dan 1.000 bewerkingscommando's. Het biedt de gebruiker ook de mogelijkheid om deze opdrachten te combineren in macro's om het werk te automatiseren. | Vim is een teksteditor die voor het eerst werd uitgegeven door Bram Moolenaar in 1991 voor de Amiga-computer. De naam "Vim" is een afkorting van "Vi IMproved" omdat Vim is gemaakt als een uitgebreide versie van de vi-editor, met veel extra functies die zijn ontworpen om nuttig te zijn |
Ontworpen door | Richard Stallman | Bram Moolenaar |
Eerste uitgave | 1976 | 1991 |
Stabiele vrijlating | 22.3 (2008-09-05) | 7.2 (08-08-2008) |
Buffer tabs | Ondersteund in zowel de opdrachtregel als de grafische gebruikersinterface | Ondersteund in zowel de opdrachtregel als de grafische gebruikersinterface |
Vim gebruikt bewerkingsmodi - meestal de opdrachtmodus en invoegmodus. Vim probeert het aantal toetsaanslagen dat een gebruiker moet indrukken te minimaliseren, omdat vi, waarop Vim is gebaseerd, is ontworpen om te worden gebruikt via langzame terminals.
Emacs gebruikt modificatietoetsen om snelkoppelingen in te schakelen, waarbij vaak meerdere toetsen tegelijk moeten worden ingedrukt voor een enkele functie. Dit aspect van Emacs wordt vaak bekritiseerd.
Emacs is gemakkelijker te leren omdat het een meer natuurlijke interface heeft (voor gebruikers die bekend zijn met op grafische gebruikersinterface gebaseerde teksteditors). Omdat Vim verschillende bewerkingsmodi heeft, vinden beginners het een beetje moeilijker om te leren.
Vim-enthousiastelingen beweren dat zodra een gebruiker bekend raakt met de bewerkingsmodi en opdrachten van Vim, dit een veel grotere productiviteit en efficiëntie mogelijk maakt. Bestanden bewerken gaat meestal sneller met Vim dan met Emacs vanwege de doelbewust snelheidsinterface van Vim. De verplaatsing van de cursor kan bijvoorbeeld worden bestuurd via de H, J, K, en L toetsen in de normale modus. Dit betekent dat de handen van de gebruiker de "home row" -positie niet hoeven te verlaten, wat de efficiëntie verbetert, maar komt ten koste van overhead toevoegen omdat schakelen tussen modi vereist is om te kiezen tussen beweging en tekstbewerking. In Emacs (met de standaardconfiguratie), verplaatst de gebruiker de cursor met de Ctrl-B- of Ctrl-F-snelkoppelingen, wat de beginnende gebruiker zou kunnen vertragen omdat er op twee toetsen moet worden gedrukt. Productiviteits- en efficiëntieverbeteringen in Emacs zijn afhankelijk van de configuratie van de bewerkingsomgeving in plaats van de editor zelf.
Vim is lichter dan Emacs en gebruikt minder geheugen. Vim-voorstanders bekritiseren de hulpbronnenconsumptie van Emacs met de ironische suggestie dat Emacs staat voor "Tachtig megabytes en constant ruilen".
Met gnuclient kan echter één blijvend Emacs-proces worden uitgevoerd dat verschillende clients tegelijkertijd kan ondersteunen. Dit versnelt de opstarttijd en verlaagt het totale geheugengebruik, waardoor de afstand tussen Emacs en Vim wordt verkleind.
Hoewel zowel Vim als Emacs plug-ins ondersteunen die hun functionaliteit verbeteren, ondersteunt Emacs veel meer aanpassingen van de editoromgeving. Dit is misschien wel het belangrijkste kenmerk van emacs en is verantwoordelijk voor veel van de toegewijde aanhangers van emacs.
Emacs kan worden uitgebreid in elisp, terwijl Vim zijn eigen interne scripttaal heeft en ondersteuning biedt voor het gebruik van andere programmeertalen voor het ontwikkelen van plug-ins.
Emacs kunnen on the fly worden uitgebreid door ingebouwde elisp-functies opnieuw te definiëren, door de nieuwe definitie in Emacs te typen of door elisp-bestanden te laden. Groepen verwante wijzigingen worden "modi" genoemd en kunnen eenvoudig worden geconfigureerd om automatisch te worden gebruikt voor bepaalde typen bestanden (buffers). Het is dus eenvoudig om modi te definiëren voor verschillende programmeertalen of frameworks zoals "lisp-modus" of "Ruby on Rails-modus" of "PHP-modus". Deze modi kunnen zelfs het hoofdgedrag van Emacs rechtstreeks wijzigen, automatisch tekst opmaken of inkleuren en standaardsjabloon of "boilerplate" -tekst toevoegen, zoals functie-verklaringen en sluitingen. Dus programmeurs vinden Emacs veel beter aanpasbaar aan hun specifieke vereisten dan Vim. Toch zullen sommige programmeurs vinden dat Vim uiteindelijk beter geschikt is voor hun programmeeromgeving dankzij de aanpasbare en volledig modale bediening.
Vim kan ook tijdens het werken worden uitgebreid met de opdrachtmodus. In de commandomodus kunnen configuratie-opties worden ingesteld, functies worden gedefinieerd en macro's worden gemaakt. Eigenlijk zijn configuratiebestanden voor Vim slechts opdrachten die via de commandomodus kunnen worden ingevoerd.
Zowel Vim als Emacs hebben grafische gebruikersinterfaces. Vrijwel alle menu-items in de grafische interface voor beide editors zijn eenvoudigweg manieren om een sneltoetsopdracht of snelle configuratie af te handelen. De GUI's voor de editors bieden vrijwel geen extra functies dan die beschikbaar zijn in de CLI (opdrachtregelinterface)
Emacs gebruikt XDisplay of gtk2 voor zijn GUI. Vim kan naast gtk2 ook veel andere GUI-bibliotheken gebruiken, zoals gtk, gnome, gnome2, motief, athena en neXtaw.