Was sind die Vor- und Nachteile von Vim und Emacs?

372

Wie würden Sie diese Editoren vergleichen? Was sind die Vor- und Nachteile von jedem?

[ Anmerkung ] Dies ist nicht dazu gedacht, von denen beantwortet zu werden, die "einen hassen und einen anderen lieben", oder von denen, die nicht beide benutzt haben.

John Berryman
quelle
1
M-! emacs RETEs ist wie Google nach "Google" suchen
Seamus
11
Duplikat der SO-Frage: stackoverflow.com/questions/1430164/… von ubuntu askubuntu.com/questions/804/… und Programmierer programmers.stackexchange.com/questions/1271/… Ich muss die Verbreitung hier lieben.
Trey Jackson
27
Ich bin überrascht, dass niemand XKCD 378 erwähnt hat .
Tedder42
9
Beachten Sie, dass sich diese Fragen niemals darum kümmern, einen Vergleich mit Ed, dem einzigen echten WYGIWYG-Editor, anzustellen!
Mark K Cowan
4
@ tedder42 Dann können Sie auch "Mel" angeben ...
Tobias Kienzler

Antworten:

420

Ich benutze beide, obwohl ich weiß, welche ich wählen würde, wenn ich eine auswählen müsste. Trotzdem werde ich versuchen, einen objektiven Vergleich zu einigen Themen anzustellen.

  • Überall verfügbar? Wenn Sie ein professioneller Systemadministrator sind, der mit Unix-Systemen arbeitet, oder ein Hauptbenutzer von eingebetteten Geräten (Router, Smartphones mit Busybox usw.), müssen Sie vi (nicht Vim) kennen, da es auf allen Unix-Systemen und den meisten anderen Systemen verfügbar ist Unix-ähnliche Systeme, ob Desktop, Server oder Embedded. Für einen normalen Benutzer ist dieses Argument irrelevant: Emacs ist für jedes Desktop- / Server-Betriebssystem leicht verfügbar, und da es Remote-Bearbeitung unterstützt, ist es ausreichend, es auf Ihrem Desktop-Computer zu haben.

  • Aufgebläht? Emacs stand einst humorvoll für "Acht Megabyte und ständiges Tauschen". Derzeit benötigt Google Chrome auf meinem Computer ungefähr so ​​viel RAM pro Tab wie Emacs für 100 geöffnete Dateien, und ich werde Firefox nicht einmal erwähnen. Im 21. Jahrhundert ist das Aufblähen des Emacs nur ein Mythos.

    Feature Bloat ist auch kein Problem. Wenn Sie es nicht benutzen, müssen Sie nicht wissen, dass es da ist. Emacs-Funktionen stehen Ihnen nicht zur Verfügung, wenn Sie sie nicht verwenden, und die Dokumentation ist sehr gut organisiert.

  • Startzeit : Vi (m) Befürworter beschweren sich über die Startzeit von Emacs. Ja, der Start von Emacs ist langsam, aber das ist keine große Sache: Sie starten Emacs einmal pro Sitzung und stellen dann mit eine Verbindung zum laufenden Prozess her emacsclient. Daher ist Emacs langsamer Start meistens ein Mythos.

    Es gibt eine Ausnahme: Sie melden sich bei einem Remote-Computer an und möchten dort eine Datei bearbeiten. Das Starten eines Remote-Emacs ist (normalerweise) langsamer als das Starten eines Remote-Vim. In einigen Situationen können Sie einen Emacs auf dem Bildschirm laufen lassen. Sie können Remotedateien auch in Emacs bearbeiten, dies unterbricht jedoch den Ablauf, wenn Sie sich in einer SSH-Sitzung in einem Terminal befinden. (Seit XEmacs 21 oder GNU Emacs 23 können Sie ein Emacs-Fenster von einer laufenden X-Instanz in einem Terminal aus öffnen.)

    Beim Umdrehen habe ich beobachtet, dass Vim merklich länger zum Laden braucht als Emacs ( vim -u /dev/nullvs. emacs -q). Zugegeben, das war auf einer seltsamen Plattform (Cygwin).

  • Anfängliche Lernkurve: Diese variiert von Person zu Person. Michael Mrozeks Grafik brachte mich zum Lachen. Im Ernst, ich stimme zu, dass Vims Lernkurve steiler und steiler beginnt als bei jedem anderen Editor, obwohl dies durch die Verwendung von gvim verringert werden kann.

    Da ich einige Emacs-Mythen aufgelöst habe, möchte ich einen vi-Mythos auflösen: Es ist nicht schwer oder schmerzhaft, einen Modal-Editor zu verwenden. Es braucht ein wenig Gewohnheit, aber nach einer Weile fühlt es sich sehr natürlich an. Wenn ich vi (m) umgestalten würde, würde ich die Modi definitiv beibehalten.

  • Asymptotische Lernkurve: Sowohl Vim als auch Emacs verfügen über eine Vielzahl von Funktionen, und Sie werden nach Jahren des Gebrauchs immer wieder neue entdecken.

  • Produktivität : Dies ist ein äußerst schwieriges Thema. Befürworter von vi (m) argumentieren, dass Sie so ziemlich alles tun können, ohne die Startreihe zu verlassen, und das macht Sie effizienter, wenn Sie es am meisten brauchen. Befürworter von Emacs erwidern, dass Emacs viele Befehle hat, die nicht häufig verwendet werden. Gewähren Sie daher keine Schlüsselbindung, sind Sie aber verdammt praktisch, wenn Sie sie benötigen ( obligatorische xkcd-Referenz ).
    Meine persönliche Meinung ist, dass Emacs letztendlich gewinnt, es sei denn, Sie haben eine Tippbehinderung (und selbst dann können Sie Emacs so konfigurieren, dass nur Tastenkombinationen und keine Kombinationen wie Ctrl+ Buchstaben erforderlich sind ). Home-Row-Keys sind nett, aber sie sind oft nicht so ein Gewinn, weil man den Modus wechseln muss. Ich glaube nicht, dass es irgendetwas gibt, was Vim wesentlich machen kann effizienter als Emacs, während das Gegenteil der Fall ist.

  • Anpassbarkeit : Beide Editoren sind programmierbar, und für beide gibt es eine Vielzahl verfügbarer Pakete. Vim ist jedoch ein Editor mit einer Makrosprache. Emacs ist ein in Lisp geschriebener Editor mit einigen Ad-hoc-Primitiven. Emacs gewinnt spektakulär, wenn Sie versuchen, etwas zu tun, an das die Autoren einfach nicht gedacht haben. Dies passiert nicht jeden Tag, aber es sammelt sich im Laufe der Jahre.

  • Mehr als ein Editor : Vim ist ein Editor. Emacs ist nicht nur ein Editor, sondern auch eine IDE, ein Dateimanager, ein Terminalemulator, ein Webbrowser, ein Mail-Client, ein News-Client, ... Ob das gut oder schlecht ist, ist umstritten. Sie können Emacs jedoch auch als Editor verwenden (siehe oben unter „Funktionsüberfluss“).

  • Als IDE : Sowohl Vim als auch Emacs unterstützen viele Programmiersprachen und andere Textformate. Über die Grundlagen wie syntaktisches Färben und automatisches Einrücken hinaus verfügen beide über erweiterte IDE-Funktionen wie Querverweissuchen für Code und Dokumentation, unterstütztes Einfügen und Refactoring, integrierte Versionskontrolle und die Möglichkeit, eine Kompilierung zu initiieren und zum ersten Fehler zu springen.

    Eine Domäne, in der Emacs besser ist als Vim, ist die Interaktion mit asynchronen Unterprozessen. In diesem Fall starten Sie eine lange Kompilierung und möchten in derselben Editorinstanz etwas anderes ausführen, während der Compiler aktiv ist. Oder wenn Sie mit einer Read-Eval-Print-Schleife interagieren möchten - Emacs ist wirklich der Hammer, Vim hat nur ungeschickte Hacks zu bieten. Trotzdem hat Neovim , eine neue Version von Vim, bewiesen, dass dies behoben wurde, und andere verschiedene Fehlerbehebungen implementiert, die nicht in Stock Vim implementiert wurden.

Gilles
quelle
34
Ich kann dem Punkt "Mehr als ein Redakteur" nicht zustimmen. Vim hat auch viele Plugins, einschließlich solcher, die es in einen Dateimanager oder eine IDE verwandeln (wie vim-latex).
Rozcietrzewiacz
7
Dadurch fühlte ich mich klein ...
Gnometorule
10
@rozcietrzewiacz: Ja, aber können Sie in Vim im Internet surfen? E-Mail lesen? Überprüfen Sie Ihren RSS-Feed? Ich glaube nicht, dass Sie leugnen können, dass Emacs einfach mächtiger ist, obwohl der Nutzen dieser Macht davon abhängt, wonach Sie suchen.
Musicfreak
3
@ Bananguin Emacs ist besser in allem, was die Interaktion mit einer REPL beinhaltet . Zum Beispiel ist Proof General sehr schön (natürlich ist es eine sehr enge Anwendungsdomäne). Emacs ist gut darin, Dinge zu tun, an die noch niemand gedacht hat: Emacs Lisp ist viel netter als Vims Makrosprache. Emacs bietet in der Regel eine bessere Unterstützung für das Einrücken von Quellcode, aber ich denke nicht, dass es ein Fehler von Vim ist, sondern ein Mangel an Bibliotheken (die Vim-Unterstützung beschränkt sich in der Regel auf das Hervorheben von Syntax).
Gilles
5
@MichaelHampton Dann musst du jung sein. 1985 waren es acht Megabyte . Mittlerweile sollten es wohl achttausend Megabyte sein, außer dass niemand Emacs 'Speicherverbrauch bemerkt, da es weniger als eine Registerkarte im Browser gibt.
Gilles
267

Ich werde veröffentlichen, was meiner Meinung nach die Hauptvorteile von jedem sind:


Emacs bietet erheblich mehr Erweiterungen, mit denen Sie Aufgaben erledigen können, die sich nur auf einen vagen Texteditor beziehen, wie das Durchsuchen des Dateisystems oder das Durchsuchen der Versionskontrolle, und Erweiterungen, die in keiner Weise auf einen Texteditor zurückzuführen sind, wie das Lesen von RSS-Feeds. Wenn Sie eine Umgebung anstelle eines Texteditors wünschen, ist Emacs besser als Vim. Ich denke auch, dass Emacs viel einfacher zu erlernen ist, auch wenn einige glauben, dass Sie:

Editor Lernkurve Comic

Insbesondere denke ich, dass ein Emacs-Anfänger schneller ist als ein Vim-Anfänger


Andererseits ist Vim zweifellos schneller. Es scheint, dass dies ein zentraler Teil des Arguments ist, aber meiner Meinung nach gibt es überhaupt keinen Wettbewerb. Ich betrachte mich als fließenden Emacs-Benutzer und kann mich nicht mit den Leuten messen, die ich kenne und die Vim genauso gut kennen. Das Problem ist, dass die Anzahl der Leute, die Vim beherrschen, um so schnell zu sein, unglaublich gering ist (von den ~ 30 Leuten, mit denen ich regelmäßig spreche und die Vim benutzen, denke ich, dass nur einer außergewöhnlich gut darin ist). Zwischen dem möglichen Geschwindigkeitszuwachs und dem tatsächlich erreichten Geschwindigkeitszuwachs besteht eine große Lücke . Emacs-Benutzer werden fast so schnell sein wie 99% der Vim-Benutzer, und (wie ich im Abschnitt über Emacs sagte) Emacs-Anfänger werden wahrscheinlich schneller sein als Anfänger von Vim-Benutzern

Michael Mrozek
quelle
8
ähm ... ich weiß, dass vim mehr als ein Versionskontroll-Plugin hat. und eines dieser plugins unterstützt alle gängigen systeme .... wenn emacs mehr hat ... wie viele von ihnen brauchst du, um dasselbe zu tun?
Xenoterracide
13
@xeno Ich weiß nicht, welche Plugins vim hat, also war VCS vielleicht ein schlechtes Beispiel, aber ich bin sehr zuversichtlich, dass Emacs weit mehr Plugins als vim hat, da vim die Philosophie "Ein Programm macht alles" nicht abonniert
Michael Mrozek
4
Würde jemand bitte erklären, was die oben angegebene Emacs-Grafik bedeutet? Wie ist es zu interpretieren?
Andrew-Dufresne
27
Es ist ein "Down the Rabbit-Hole" -Witz ... Es liegt daran, dass wenn man Emacs lernt, irgendwann auch Emacs erstellt werden. (Da Emacs wirklich nur eine sehr große Sammlung von Bearbeitungs-Makros / -Routinen ist, die in seinem Lisp-Interpreter geschrieben wurden.)
ocodo
15
+1 deine Geschwindigkeit gegen Erfahrung ist gut, aber vielleicht sind 99% etwas extrem. Ich meine, vim ist nicht "so" schwer zu meistern, es dauert nur ein paar Jahre;)
Johan
81

Auf vijedem (oder fast) Unix-System ist ein verfügbar, aber Sie können dies nicht über einen anderen Editor sagen. Dies ist der Hauptgrund, sich mit dem Thema vertraut zu machen vi(bitte beachten Sie "vi", nicht "vim"). Ich habe noch nie gesehen, dass Emacs in einer Standardinstallation verfügbar ist.

Ich sage nicht, dass Sie Emacs nicht verwenden oder dies der einzige Grund ist, Vim zu verwenden, aber wenn Sie in der Lage sein möchten, Unix-Systeme zu verwenden, die nicht Ihre sind, viist dies Teil der universellen Sprache.

Xenoterracid
quelle
1
Ich bin ein ziemlicher vimBenutzer, aber ich finde es oft schwierig zu benutzen vi, höchstwahrscheinlich wegen der END-Taste (vim unterstützt es, aber vi nicht oder zumindest nicht standardmäßig)
phunehehe
25
@phunehehe, wenn ich es versuche, habe nanoich eine ganze Reihe von ijkloOahs in meiner Datei ... bis mir klar wird, dass ich diese nicht für die Navigation verwenden kann. Ich benutze die Pfeiltasten nicht zum Navigieren.
Xenoterracide
5
Bei langsamen Servern über zwielichtige Verbindungen wird die Verbindung doppelt ausgeführt: Der Editor, über den sie garantiert verfügen (in der Unix-Spezifikation, glaube ich?), Ist vi, und der Befehlsmodus von vi erleichtert das Bearbeiten von Dateien mit weniger Tastenanschlägen erheblich Es dauert einige Sekunden, bis jeder Tastendruck auf Ihrem Bildschirm angezeigt wird. Natürlich wird Schritt 1 normalerweise installiert vim:)
Gaurav
12
@phunehehe Ich benutze kein Esc. Ich benutze Strg + [es macht das gleiche;)
Xenoterracide
8
+1 für Gauravs Kommentar. Vi eignet sich hervorragend für die Notfallbearbeitung von Konfigurationsdateien über eine beschissene 3G-Verbindung auf einem langsamen Mobiltelefon.
LawrenceC
23

Ich finde sie beide großartig. Ich denke, einer von beiden kann fast alles tun, was man sich vorstellen kann, und beide sind so anpassbar, dass beide genau das sind, was man möchte, nicht mehr und nicht weniger, wenn man sie fertig anpasst.

Emacs sticht für mich insofern heraus, als es den ISO / IEC-Standards für Benutzerfreundlichkeit und Konsistenz von Benutzeroberflächen ein wenig näher kommt (obwohl dies immer noch nicht der Fall ist), und spielt daher nicht so viele Tricks mit Ihren „Instinkten“ in Bezug auf dieses Vim aus. Die Lebensdauer der Instinkte, die Sie bei der Arbeit mit anderen Programmen entwickelt haben, wirkt sich nicht auf Sie aus.

Vim ist ein völlig anderes Modell und in vielerlei Hinsicht von sich aus überlegen, da es sich weniger auf Cntrl / Alt-Sequenzen als auf die Modi stützt, sodass Sie Ihre Arbeit in der Startreihe behalten und tippen können schneller. Aber vim ist praktisch einzigartig, und wenn Sie keine sehr ungewöhnliche Begleitsoftware (z. B. Vimperator, Jumanji / Zathura usw.) installieren, werden die Instinkte, die Sie bei der Arbeit mit vim entwickeln, nicht auf andere Programme übergehen und umgekehrt. Das heißt, ich habe mich auf vim selbst entschieden. Man muss sich früher oder später darauf einigen, egal ob gut oder schlecht, da es schwierig ist, beides zu meistern.

schäbig
quelle
1
Ein Kommentar zur Zeile "Die Instinkte, die Sie bei der Arbeit mit vim entwickeln, werden nicht auf andere Programme übertragen": Die Zeile "set editing-mode vi" kann zu einer ~ / .inputrc-Datei hinzugefügt werden (auf Linux-Systemen, die dies unterstützen). . Dies ermöglicht eine vi-artige Syntax für die Eingabe von Text in Programmen mit readline for stdin, z. B. die Bash-Shell selbst. Es kann (manchmal überraschend) eine größere Anwendbarkeit auf die mit vim entwickelten Schnittinstinkte geben.
Christian Abbott
Glücklicherweise gibt es viele Leute mit diesem Problem und sie haben Erweiterungen für viele Programme erstellt, um sie vim-ähnlicher zu machen .
DarkWiiPlayer
21

Ich benutze beide regelmäßig. Ich betrachte Emacs als "live in" -Editor, während ich Vim für schnelle, einmalige Aufgaben verwende. Oberflächlich gesehen ist Emacs viel aufgeblähter als Vim, und es ist wirklich nicht ganz so bequem, "hochzufahren" wie Vim, aber ich finde auch, dass die Philosophie der Benutzerschnittstelle von einer zur anderen dieses Paradigma unterstützt. Emacs ist viel mehr darauf ausgelegt, Sie im Haus zu halten und die Dinge schön und bequem zu machen, damit Sie nicht gehen müssen.

Viele Menschen fliehen vor Emacs, weil sie stark auf Bucky Bits angewiesen sind , aber das ist für mich ein ziemlich dummer Grund. Die wahre Stärke von Emacs gegenüber Vim ist die Anpassbarkeit, und mit der Kraft von Viper usw. ist dies wirklich kein Problem. Natürlich bietet Vim-Script eine eigene Anpassungsstufe, und wenn beispielsweise Ihre Lieblingsprogrammiersprache nicht mit einem geeigneten Syntax-Textmarker ausgestattet wäre, könnten Sie sich sicherlich einen ausdenken, aber Emacs ist letztendlich eine selbsthostende Lisp-Maschine Am Ende kann man viel, viel mehr damit herumspielen. Es gibt in Vim einfach keine Tools wie Gnus oder Org-Modus , um nur einige zu nennen. Kurz gesagt, Emacs ist nicht nur ein Editor, sondern praktisch ein verdammtes Betriebssystem.

Für die Bearbeitung von Text würde ich sagen, dass sie genau gleich sind.

Eli Frey
quelle
30
"Emacs wäre ein großartiges Betriebssystem, wenn es nur einen Texteditor hätte, der eine Scheiße wert wäre." - Ich wurde an dieses Zitat erinnert.
Amphetamachine
@amphetamachine Ich verstehe das Zitat nicht. Bedeutet es, Emacs-the-Text-Editor herabzusetzen?
Tshepang
Es bedeutet, obwohl ich es normalerweise bissiger höre.
Cody Poll
Was die Editoren selbst betrifft, finde ich es einfacher, Text mit vim zu bearbeiten, aber ich muss die Anpassbarkeit an Emacs übergeben. Vimscript kann einem Lispeln einfach nicht standhalten.
Cody Poll
19

Ich werde meinen Wert von $ 0,02 einsetzen, da ich einige Jahre mit Emacs und XEmacs verbracht habe und dann zu Vim übergegangen bin. Um fair zu sein, ich hatte vi zwischen 1990 und 1992 ziemlich oft benutzt, daher war ich mit der Benutzeroberfläche vertraut.

Emacs

  • Emacs wurde als ein Lisp-System beschrieben, mit dem zufällig ein Editor geschrieben wurde, und darin steckt ein Körnchen Wahrheit. Sie können so ziemlich alles, was Sie wollen, in elisp implementieren, wenn Sie sich Zeit nehmen möchten, um die Umgebung zu verstehen. Ich kann nicht sagen, dass ich es jemals so gut kennengelernt habe, aber ich habe gelegentlich Frig Zeug gemacht. Da Emacs und Xemacs auf dieser Ebene nicht vollständig kompatibel sind, können Skripts von Drittanbietern auf einem, jedoch nicht auf dem anderen ausgeführt werden.

  • Es wurde beobachtet, dass sich RMS und einige andere bekannte Emacs-Hacker aufgrund von Problemen mit OOS aus der Programmierung zurückziehen mussten, wo Bill Joy, Bram Moolenaar und verschiedene andere vi-Leuchten immer noch dabei sind. Emacs ist hart an deinen kleinen Fingern.

  • Emacs ist ein viel katholischeres System als vi und wird als kanonisches Beispiel für Software-Envelopment angesehen . Zusammen mit Netscape ist dies einer der Beiträge von jwz , um dieses Gesetz zu beweisen.

Eine einzigartige Sache, die ich einmal mit xemacs gemacht habe, war, es auf einem Computer laufen zu lassen und eine x-Sitzung auf einem x-Terminal (eigentlich eine alte, umfunktionierte Sun 3/60) in einem anderen Raum gegen denselben Puffer auf derselben laufenden Instanz zu öffnen.

Vorteile: Erweiterbar, leistungsstärker als jeder andere bekannte Editor, ausgereifte Integration mit so ziemlich jedem wichtigen Programmierwerkzeug für freie Software.

Nachteile: Bedenkliche Ergonomie, elisp ist nicht leicht zu erlernen.

Vim

Disclamer - Ich bin vor ungefähr 10 Jahren von Emacs zu Vim gewechselt und benutze Vim gewöhnlich auf Windows- und Unix / Linux-basierten Systemen.

  • Vi und seine Nachkommen verfügen über eine sehr gute Tastaturmakrofunktion zur Automatisierung von Bearbeitungsaufgaben. Die Skriptfunktion in vim ist nicht so ausgefeilt wie in elisp, aber Sie können sie mit Unterstützung für Python, Tcl, Perl und möglicherweise einige andere Systeme erstellen. Ich habe nur gelegentlich Skripte (außerhalb von .vimrc-Dateien) für vim geschrieben.

  • Vim ist kleiner als Emacs, aber das ist heutzutage keine große Sache.

  • Die Dokumentation und die Online-Hilfe von Vim sind ziemlich gut. Emacs hat eine recht gute Online-Dokumentation, aber ich denke nicht, dass sie so umfassend ist wie die von vim.

  • Vim erbt die skurrile modale Benutzeroberfläche von VI, kann sich aber jetzt wie ein modloser Editor verhalten, da Sie im Einfügemodus navigieren können. Unter Windows kann es sich sehr ähnlich zu einer Windows-Anwendung verhalten.

Vorteile : Gute Tastaturmakrofunktion, passabel gute Erweiterbarkeit und Skripterstellung, aber nicht so gut wie Emacs. Vim- oder vi-abgeleitete Editoren sind auf den meisten, wenn nicht allen Unix- oder Allzweck-Linux-Distributionen Standard. Wohl bessere Ergonomie.

Nachteile: Die modale Benutzeroberfläche fühlt sich für Benutzer, die an Windows-Benutzeroberflächen gewöhnt sind, seltsam an. Heutzutage ist das mit vim weniger ein Problem.

Betroffen vonTunbridgeWells
quelle
Ich habe Ihre Antwort gerne gelesen, aber ich vermisse den entscheidenden Faktor. Warum bist du von Emacs zu Vim gewechselt?
Erik B
Es war nur organisch - und die Tastaturmakros von vim funktionieren wirklich gut.
ConcernedOfTunbridgeWells
1
Verdammt, als jüngerer Programmierer ist das Ergonomieargument sehr ansprechend. Dies könnte meine Entscheidung getroffen haben, VI und VIm anstelle von Emacs zu lernen.
Didier A.
15

Normalerweise benutze ich Vim, aber beide sind großartige Editoren.

Das Erlernen von vi war fies, aber ich habe es gemeistert und gelernt, es zu mögen. Meine frustrierendsten Momente waren, als die Feststelltaste aktiviert war. Sie könnten es mit gVim versuchen, aber einer der größten Vorteile von vi und Emacs ist die Fähigkeit, ordentliche Dinge zu tun, während Sie die Hände auf der Tastatur halten, und gVim wird Sie wahrscheinlich weiterhin mit der Maus bedienen. (Das Erlernen des gleichzeitigen Spielens von Roguelike-Spielen gab mir Übung mit den Cursorbewegungstasten, veranlasste mich jedoch manchmal, mich in Dokumenten diagonal zu bewegen.)

Emacs ist wahrscheinlich zugänglicher. Es ist eine Modeless, und Sie werden sich nicht durch Drücken der Feststelltaste in die Irre führen. Die Idee, den Editor durch Eingabe von Buchstaben mit gedrückter Steuertaste zu steuern, sollte modernen Power-Benutzern nicht zu fremd sein, obwohl die eigentlichen Tasten für den typischen Windows / Mac OS X-Benutzer wild und willkürlich erscheinen. Auch hier sind Versionen, mit denen Sie die Maus verwenden können, auf lange Sicht weniger vorteilhaft.

Beide erfordern ein gewisses Maß an Fachwissen, um sie effektiv zu nutzen. Im Gegensatz zu beispielsweise Notepad können Sie sich nicht einfach hinsetzen und bearbeiten.

Beide sind konfigurierbar, obwohl für mein Geld das Schreiben von Erweiterungen in demselben Lisp, in dem der Editor geschrieben ist, eine flüssigere Erfahrung macht. (Emacs ist wie üblich kein Editor. Es ist eine Lisp-Umgebung, die auf die Textverarbeitung zugeschnitten ist und eine Menge vorab geschriebener Software enthält, einschließlich eines Editors. Daher ist der Witz "Emacs macht eine anständige Shell, könnte aber verwendet werden ein besserer Editor. ")

Normalerweise benutze ich Vim, weil es sich nach einem ausgiebigen Training einfacher anfühlt. Dies kann an den Vorteilen des Modus-Systems liegen, bei dem eine enorme Anzahl von Befehlen mit einem Finger in der Nähe der Startreihen verfügbar ist, oder am "Baby-Enten-Syndrom", das für Redakteure sehr wichtig ist dazu.

Sie werden auch mit nichts falsch machen.

David Thornley
quelle
9

Der Hauptgrund, warum ich vi / vim nicht benutze, ist, dass es modal ist. Der Hauptgrund, warum ich vi benutze, ist, dass es fast überall verfügbar ist.

Dennis Williamson
quelle
12
Der Hauptgrund, warum ich vim benutze, ist, dass es modal ist. Höhere Lernkurve, aber viel einfacher zu bedienen, wenn Sie sich erst einmal daran gewöhnt haben.
Kris Jenkins
1
Es ist erwähnenswert, dass, wenn Sie modale Bearbeitung mögen, Emacs eine gute Unterstützung durch den bösen Modus hat - emacswiki.org/emacs/Evil
Charles Stewart
9

Ich denke zufällig, dass der obige Kommentar "vim is modal" falsch ist. Vim hat Befehle. Sie können "11aNow ist die Zeit für alle guten Männer ..." ausführen und erhalten am Ende 11 identische neue Textzeilen in Ihrer Datei. Das ist ein Befehl, kein Modus. Tatsächlich gibt es jedoch einen grundlegenden Unterschied zwischen Vim-Befehlen und Emacs-Befehlen. Ich bin mir nicht ganz sicher, ob ich es beschreiben kann, aber Eric Fischer hat vor über 10 Jahren die Emacs-artige Zeilenbearbeitung in einen TTY-Treiber integriert und einen Artikel darüber veröffentlicht:

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

Er stellte fest, dass sich Emacs Style Line Editing grundlegend von vi-style unterschied.

Daher hat Emacs den Vorteil, dass viele andere Dinge (Bash, Gnuplot, Zsh, Ksh, einige andere, die ich mir nicht vorstellen kann) letztendlich Emacs-artige Zeilenbearbeitung implementieren.

Ich sollte beachten, dass ich Vim die ganze Zeit persönlich benutze. Ich bin nur ein sehr gelegentlicher Emacs-Benutzer.

Bruce Ediger
quelle
1
set -o viin bashoder zshist rcmeiner Meinung nach nicht zu schwer zu laufen (oder in eine Datei zu legen ).
moon.musick
@ moon.musick - sicherlich nicht, ich mache es die ganze Zeit. Es ist nur so, dass gnuplotPostgresqls psql, MySQLs mysqlund eine Menge anderer Schnittstellen den Emacs-Modus standardmäßig mehr oder weniger ausführen. Wenn nur Oracle sqlplusbefehlen könnte, die Befehlszeile zu bearbeiten ... nein, nein. Das wäre zu viel verlangt von einer Major Corporation. Sie haben Trends zu folgen!
Bruce Ediger
Ja, meistens inputrcwird das für Shell-Tools gemacht, aber dann wundere ich mich eine halbe Sekunde lang, warum jnicht in Mendeley Desktop gescrollt wird, nachdem vom Terminal darauf gewechselt wurde, und sie wurden zu oft nach vim-Bindungen gefragt. Kann leider nicht alles abdecken und hat ein konsistentes Umfeld.
moon.musick
2
@BruceEdiger ich sehr bezweifle , dass die Entwickler von mysql(1), psql(1), gnuplot(1), auch python(1), perlconsole(1), lftp(1), smbclient(1)und in der Tat viele interaktive Programme über keybindings für Line-Bearbeitung betroffen waren. Alle diese Programme verwenden nur GNU Readline , und der Standardmodus für GNU Readline ist (nicht überraschend) GNU Emacs-ähnlich. set editing-mode vi in your ~/.inputrcund voila - alle diese tools haben vi-ähnliche tastenkombinationen.
Dmitry Alexandrov
9

Da dies nicht ausdrücklich angegeben wurde, möchte ich hinzufügen, dass es keine bessere Programmierumgebung (Lisp in a Box, SLIME usw.) gibt als eine leicht modifizierte Emacs-Distribution. Alle meine Programmieranforderungen (99%) werden von Vim aus erledigt, aber für all die Lisp-Bibliotheken und -Routinen, die ich schreibe, muss ich Emacs starten, um alles produktiv zu machen.

Shamster
quelle
8
Ich frage mich manchmal, ob dies mehr über Lisp oder über Emacs aussagt und ob das gut oder schlecht ist ...
Kevin Cantu
8

Ich benutze Vim / gVim.

Früher habe ich Emacs verwendet, aber ich fand, dass gVim auf langsameren Computern im Allgemeinen schneller arbeitet. Aufgrund der POSIX-Anforderungen ist vi fast überall verfügbar.

Wenn ich Vim oder gVim benutze, benutze ich oft die Maus, die Unterstützung ist großartig, denke ich.

Ich habe mit Emacs angefangen, weil es für Anfänger einfacher war, Emacs zu verwenden. Ich fand die Verwendung von Nano aus irgendeinem Grund recht fehleranfällig, und irgendwann wurde mir klar, dass ich mich mit vi viel wohler fühle.

Im Moment ist es eine Mischung. Ich benutze auch ziemlich oft Eclipse und gedit. Vim ist jedoch immer noch mein bevorzugter und meistgenutzter Editor.

Polemon
quelle
7

Ich benutze sowohl gVim als auch Emacs gut genug, um produktiv zu sein, obwohl ich in keinem von beiden Experte bin. Eine Sache, die ich mit Sicherheit sagen kann, ist, dass Vim und gVim auf meinem Windows 7-Laptop (den ich bei der Arbeit verwenden muss) schneller laufen. Emacs unter Windows hat die ungewöhnliche Angewohnheit, bis zu einer Minute anzuhalten und nicht mehr zu reagieren, selbst wenn weiterhin Tastatureingaben akzeptiert werden, bevor alles, was sich im Tastaturpuffer angesammelt hat, in Eile ausgespuckt wird. Dies ist unter Mac OS oder Linux nicht der Fall. Trotzdem benutze ich Vim oder gVim die meiste Zeit auf allen Plattformen, damit ich nicht anhalten und überlegen muss, welchen Editor ich verwende und anpasse. Das heißt, in einer reinen * nix-Umgebung würde ich wahrscheinlich bei Emacs bleiben, weil ich die Bearbeitung ohne Model etwas natürlicher finde.

Fazit: Meiner Meinung nach sind beide Editoren leistungsstark genug, um alle Textbearbeitungsanforderungen zu erfüllen. Die Auswahl sollte auf praktischen Erwägungen (wie den Besonderheiten der Plattformimplementierung) und dem Arbeitsstil basieren.

Flügel Flanagan
quelle
3

Der Hauptunterschied zwischen Emacs und Vim ist ergonomisch. Wie Sie wissen, gibt es das Karpaltunnelsyndrom CTS. Emacs ist sehr "gefährlich", wenn Sie CTS haben und CTS provozieren. Vim - nicht, man kann an vielen Stellen über diesen Unterschied lesen. In Vim können Sie beispielsweise Text nur mit einem Finger bearbeiten. In Emacs - kann man nicht :)

Paul
quelle
3
Es ist nicht einmal bewiesen, dass CTS tatsächlich mit dem Tastaturgebrauch zusammenhängt. Obwohl oberflächlich plausibel, gibt es Links, die zeigen, dass CTS tatsächlich mehr als alles andere genetisch verursacht wird. So , während es noch weniger geben kann helfen , wenn Sie bereits CTS haben, glaube ich nicht , es gibt jede Beweise dafür , dass ein Redakteur zu sagen , verursacht CTS mehr als eine andere.
Konrad Rudolph
-2

Ich benutze vi/ nvi(NICHT vim), weil es einfach und unauffällig ist.

vimLiebt Pieptöne so sehr, dass es schwieriger und etwas unauffälliger ist, abgeschaltet zu werden. Ich musste den internen PC-Lautsprecher physisch entfernen, bevor ich irgendwann herausfand, dass der vergrabene Ref darüber, wie es geht :)

set vb t_vb=

Auch ich benutze keine Syntaxfärbung, Grau über Schwarz ist für mich die schönste.

Und vielleicht bin ich zu dumm, um herauszufinden, dass emacsdie einzigen drei Tastenkombinationen, an die ich mich erinnere, STRG-ALT-ENTF sind.

aa.
quelle
-2

"Was sind die Vor- und Nachteile von Vim und Emacs?" - ha!

Ich überlasse die Profis meistens anderen.

Die Nachteile von beiden sind, dass sie beide alte Schule sind. Ich habe im Laufe der Jahre wahrscheinlich 50 verschiedene Editoren verwendet, von Basic-Editoren über superschnelle Assembler-Editoren (zum Beispiel VEDIT) bis hin zu schicken GUI-Editoren, von denen einige besser sind als andere. Ich habe sogar meinen eigenen speziellen Editor namens ForthStar geschrieben und ihn angepasst, um einen Baum aus Btrieve-Blättern mit mehreren Indizes für eine leistungsstarke Suche zu bearbeiten, um die zuletzt bearbeiteten Blätter sofort zu finden oder um Codekomponenten oder Blatteltern schnell zu finden oder Kinder.

Ich denke, sowohl vi als auch emacs sind mehr Religion als Muskeln. Die kreativen Köpfe, die sie aufgebaut haben, sind größtenteils weitergegangen, und der neuen Unterstützung fehlt der Mut und die Fähigkeit, sie neu zu erfinden.

Ja, Emacs kann viel, aber es wird durch lisp, eine schöne und mittlerweile weitgehend veraltete Sprache, verlangsamt.

Beide stecken in schwierigen Tastaturlayouts fest. Emacs könnte sich ein wenig an den Benutzer anpassen, zumindest, indem er erkennt, dass es eine Alt-Taste anstelle der antiken Meta-Taste gibt. Und wie WordStar erkennt, ist es die Unterscheidung nicht wert, CA CB direkt von CA B zu halten, wenn die Geschwindigkeit eingegeben wird. Es ist besser, einfach eine zu haben, die von einer der beiden Tastenkombinationen ausgelöst wird. Ja, Sie können die Tastenkombinationen ändern, aber was für ein Durcheinander haben Sie später.

Vi ist clever, aber es fehlt an leistungsfähigem Suchen und Ersetzen wie in Notepad ++, das Ihnen zeigt, was es gefunden hat, Sie können es erweitern und selektiv in Farbe anwenden, um nur eine Innovation zu erwähnen.

Heutzutage erlaubt fast jede andere GUI das Zoomen mit dem Mausrad. Emacs GUI scheint das nicht zum Laufen zu bringen. Und wo ist das schöne Griechenland, wie es Kate hat?

Mein Lieblings-Tastaturlayout im Laufe der Jahre war Wordstar Cursordiamant. Zumindest war es leicht zu lernen und machte sofort Sinn. Das, das ich am meisten hasste, war WordPerfect, das die Komplexität erhöhte und anscheinend etwas auf Emacs basierte.

Seien wir ehrlich, der größte Teil der Welt hat heutzutage eine grafische Benutzeroberfläche. Und wie es oder nicht Texteditoren sind in ihrem Alter etwas stecken.

Ich denke, es wäre besser, einen universellen Editor zu haben, der leicht zwischen Emacs, Vi, Wordstar oder anderen wichtigen Layouts wechseln kann, ohne die leistungsfähigeren Befehle zu verlieren, die er bietet. Echte Programmierer müssen eine Vielzahl von Bearbeitungswerkzeugen verwenden. Warum nicht einen Redakteur haben, der unsere Bedürfnisse erfüllt, um Arbeit zu erledigen, anstatt uns dazu zu zwingen, Dinge zu tun?

Eliptical-Ansicht
quelle
Da die Frage sowohl Vor- als auch Nachteile hat, ist die Frage damit nicht beantwortet. Soweit ich sehen kann, wird nur erwähnt, wie andere Editoren besser sind als Vi und Emacs.
Kusalananda
Alle Antworten sind für eine Frage in Ordnung, bis sie die Frage beantworten und sich wesentlich von den vorherigen unterscheiden. "Sieht ok aus".
user259412
Das Q fragt eindeutig nach den Nachteilen. Und ich erwähne einige Profis.
Ellipsentrainer