797 Stimmen

Unterschiede zwischen Emacs und Vim

Ohne in eine religiöse Diskussion darüber einzusteigen, warum das eine besser ist als das andere, was sind die praktisch Unterschiede zwischen Emacs und Vim? Ich möchte entweder das eine oder das andere lernen, aber mir ist klar, dass die Lernkurve für beide hoch ist und ich kann mich nicht entscheiden. Ich habe noch nie einen Editor dieser Art benutzt (ich habe immer IDEs benutzt), also ist alles, was einem Neuling hilft, ein Plus.


Bevor ein Flammenkrieg beginnt: Ich frage nicht, was besser ist, sondern was die Unterschiede zwischen den beiden sind. Ich möchte eine Zielsetzung Vergleich.

6 Stimmen

Wenn Sie einen Mac (OSX) verwenden, werden Sie feststellen, dass viele grundlegende Emacs-Befehle zur Cursorbewegung so gut wie überall funktionieren. (Zum Beispiel funktionieren sie hier, wo ich diesen Kommentar in die Webseite tippe.) Für Mac-Benutzer ist es also systemweit von Vorteil, zumindest die folgende Teilmenge von emacs zu lernen: ^A ^B ^D ^E ^F ^K ^L ^N ^O ^P ^T ^V ^Y

2 Stimmen

@JamesAnderson: Meiner Erfahrung nach ist das Gegenteil der Fall. Ich benutze vim seit 2,5 Jahren und bin dann zu emacs gewechselt. Den Emacs-Leuten ist es meistens egal... "was auch immer für dich funktioniert". Hier ist was ,salespitch sagt in #emacs <fsbot> We aren't gonna lie. Emacs sucks. Some of us tolerate it, but we can't tell you if YOU'LL be able to. Try it and make up your own mind.

7 Stimmen

Emacs ist definitiv ein großartiges Betriebssystem, dem aber nur ein anständiger Editor fehlt.

46voto

Martin Beckett Punkte 92477

VI ist immer verfügbar und läuft auch auf dem verkrüppeltsten Rechner mit Einzelbenutzermodus, kaputter Grafik, keiner Tastaturbelegung und langsamem Link - es lohnt sich also zu wissen, wie man einfache Dateien darin bearbeitet, nur für Sysadmin-Aufgaben.

Emacs ist eine vollständige Benutzeroberfläche in einem Editor. Die Idee ist, dass Sie Emacs beim Starten des Rechners starten und ihn nie wieder verlassen. Es ist möglich, Tausende von Sitzungen zu haben.

Ob es sich lohnt, die Fähigkeiten von Emacs zu erlernen, anstatt einen GUI-Editor/IDE zu benutzen und etwas wie Python/awk/etc für zusätzliche Aufgaben zu verwenden, bleibt Ihnen überlassen.

2 Stimmen

Ich kenne VI genau aus diesen Gründen - aber heutzutage ist es ziemlich unwahrscheinlich, dass man auf ein UNIX-System trifft, auf dem nicht zumindest eine grundlegende EMACS-Installation vorhanden ist, und es kann eine schlechte Shell-Umgebung erträglicher machen.

1 Stimmen

Stimmt, aber im Rettungsmodus ohne Tastaturbelegung oder Begriff funktioniert es möglicherweise nicht - ich habe Systeme repariert, bei denen die Verwendung von 'hijk' die einzige Option war.

3 Stimmen

Oder man kann Busybox in eine Initrd einbinden und einen defekten Speichertreiber für das Boot-Gerät debuggen, und zwar so früh im Init-Prozess, dass man nur noch die anfängliche Ram-Disk hat, und trotzdem immer noch einen Redakteur haben - vi.

39voto

Joe Casadonte Punkte 14548

Ich bin ein absoluter Emacs-Fan, aber ich kannte VI schon lange bevor ich Emacs kannte. Trotzdem bringe ich alle meine Leute dazu, VI zu lernen, weil es immer und überall verfügbar ist. Man kann mit keinem von beiden etwas falsch machen.

3 Stimmen

Das ist auch meine Erfahrung... Emacs oder uEmacs war nie verfügbar. Mein erster Editor war uEmacs (auf dem Amiga), aber seit ich vim gelernt habe, war es einfach zu praktisch, ihn dabei zu haben.

1 Stimmen

Das ist im Grunde auch meine Erfahrung. Vi ist überall und in der Regel als Standard-$EDITOR auf Unix-Systemen installiert, also muss man es kennen, wenn man mit Unix arbeitet. Abgesehen davon benutze ich emacs jeden Tag für die Textbearbeitung und ich liebe es.

0 Stimmen

Wenn mich jemand zwingen würde, vim zu lernen, würde ich aufhören.

19voto

elarson Punkte 807

Es scheint, dass eine Antwort bereits ausgewählt wurde, aber der große Unterschied für mich war immer der zwischen modal und nicht-modal. Vim ist modal, was bedeutet, dass er Optimierungen auf der Grundlage einer bestimmten Menge von Benutzungsmodi vornimmt. Zumindest habe ich das immer so gesehen. Das macht die Benutzung von Vim zu einer anderen Erfahrung, denn anstatt einen Arbeitsbereich zu haben, in den man Code eintippt, sagt man wirklich einer Umgebung, dass sie auf den Text reagieren soll. Das ist der Grund, warum die Leute sagen, dass man mit Vim wirklich eine Sprache lernt. Das :wq und :s/foo/bar ist alles Teil einer Shell-ähnlichen Umgebung, die Text editiert und liest.

Emacs hingegen ist den meisten Editoren, Textverarbeitungsprogrammen usw., die man heute kennt, sehr viel näher. Sie haben einen Arbeitsbereich, der eine hochgradig programmierbare Schnittstelle hat. Deshalb gibt es Dinge wie E-Mail, IRC, Shells, usw. Als Programmierer ist es einfach zu sagen: "Nimm die Zeilennummer, in der ich mich befinde, und mach etwas mit den Informationen". Der Wunsch, den Editor zu verlassen, wird geringer, denn anstatt den Editor zu verlassen, eine andere Anwendung/Sprache zu öffnen und etwas mit dem Text zu machen, hat man Emacs, wo man diese Dinge im Rahmen des Editors tun kann.

Die beiden Ideen sind nicht notwendigerweise gegensätzlich, sondern zeigen lediglich zwei unterschiedliche Schwerpunkte auf. Ich persönlich benutze Emacs, aber ich habe Leute gesehen, die Vim wirklich gut kennen und kann ehrlich sagen, dass es egal ist, welche man wählt. Ich habe zuerst Vim ausprobiert, aber Emacs hat sich bei mir durchgesetzt. Es stimmt, dass man, egal was man wählt, Vim zumindest einigermaßen beherrschen sollte, da es wirklich immer verfügbar ist.

17voto

Ich habe mit vi angefangen, bin dann zu emacs und schließlich zu vim übergegangen. Ich habe darüber nachgedacht, Emacs auszuprobieren, um zu sehen, was sich in den letzten fünf Jahren verändert hat. (Apropos IDEs, ich hatte eine Zeit lang mit Eclipse geliebäugelt, aber ich bevorzuge mein Terminalfenster, das meinen Mac mit der Linux-Box meines Mannes verbindet).

Die Sache mit dem Ausschneiden und Einfügen hat mich in letzter Zeit sehr gestört. Ausschneiden und Einfügen in Vim benötigt mehr Schritte als in Emacs, IIRC. Und das Einfügen von, sagen wir, einem Browser in ein Terminal-Fenster ist irritierend, es sei denn, man macht etwas Ausgefallenes, worauf ich keine Lust habe, also habe ich mich mit der seltsamen Einrückung abgefunden. Ich glaube, es war einfacher, mehrere Dateien in emacs zu bearbeiten. Zumindest das Springen von einer Datei zur nächsten, wenn man sie beide auf dem Bildschirm hat.

Ich habe weder mit den ausgefallenen Funktionen von vi noch von emacs gespielt, da ich mich lieber mit dem Programmieren beschäftige. Alles, was ich brauche, sind die hübschen Farben und die korrekte Umwandlung von Tabulator in Leerzeichen (besonders wichtig bei Python).

Ich denke, es hängt alles davon ab, ob Sie die :wq o Ctrl-x Ctrl-s (IIRC), um eine Datei zu speichern, wenn Sie sich nicht um den ganzen Schnickschnack kümmern.

@mgb hatte Recht. Ich habe vor ein oder zwei Monaten in einer Debian-Distribution mit dem Minimum an Linux gearbeitet, um etwas zu reparieren. vi war der einzige verfügbare Editor.

1 Stimmen

Das ist immer noch nicht einfach, aber es ist viel einfacher, als all die Einstellungen vorzunehmen, die das Einfügen von Terminals beeinträchtigen. verwenden :set paste ein, fügen Sie Ihren Text ein, und wenn Sie fertig sind :set nopaste kehrt in den normalen Modus zurück. Es gibt auch die :set pastetoggle=<F2> Befehl, der dies mit der von Ihnen gewählten Tastenkombination umschaltet.

0 Stimmen

Im Einrückungsmodus können Sie Folgendes tun ^R^P+ um aus der Zwischenablage einzufügen und die aktuelle Einrückung beizubehalten. ^R^O+ wird die Einrückung aufgehoben. ^R+ fügt den Text so ein, als hätten Sie ihn getippt. :help i_^R^P für weitere Informationen.

4 Stimmen

Ich kann mir nicht vorstellen, dass Ausschneiden/Einfügen noch einfacher ist als yyp . Siehe auch hier zum Ausschneiden und Einfügen in und aus verschiedenen Windows stackoverflow.com/a/8757876/654789

16voto

Es gibt einen großen Unterschied im Alltag - Vim (oder jede vi-Variante) ist von Natur aus modal (man geht in einen Befehlsmodus, in dem man nicht editieren kann) und Emacs (und die meisten anderen Editoren) sind es nicht.

Sicher, wenn man Menüs und dergleichen benutzt, muss man in Vim nicht wirklich in den Befehlsmodus gehen - zunächst. Aber um auch nur einen winzigen Bruchteil der Macht von Vim zu nutzen, werden Sie das tun. Das ist der Kern der Debatte zwischen Vim und Emacs.

Ich persönlich finde auch, dass Emacs viel besser erweiterbar ist. Sie können Elisp-Pakete für viele Dinge finden.

Ich bin allerdings neugierig, warum Sie eine dieser IDEs einer herkömmlichen IDE vorziehen. Wofür wollen Sie eine dieser IDEs erlernen?

8 Stimmen

Ich möchte es nur lernen, um zu sehen, ob es dem Hype gerecht wird, um ehrlich zu sein. Ich habe gesehen, wie flexibel beide sind, und ich habe gesehen, wie Experten einige ziemlich verrückte Sachen damit gemacht haben, und ich möchte sehen, ob es die Lernkurve wert ist. Außerdem unterstützt meine IDE kein Lisp :)

3 Stimmen

Hm. Das Problem ist, dass es so viel von Emacs gibt... aber die Sache, für die ich immer noch eine IDE verlasse, um Emacs zu benutzen, sind komplexe Serien von sich wiederholenden Aufgaben, die ich mit Hilfe von Makroaufzeichnung automatisiere. Zum Beispiel kann man ein aktuelles Wort oder einen Ausdruck nehmen, diesen in einen "Puffer" kopieren (man denke an Ausschneiden/Einfügen, nur dass man mehr als einen haben kann), dann in eine andere Datei gehen, einen Text eingeben, der teilweise den kopierten Wert verwendet und dann einen anderen, zuvor ebenfalls kopierten Wert, den Cursor weiterbewegen, die Position speichern und wieder zum ersten Puffer zurückkehren... dann den Vorgang für die nächste Zeile der Originaldatei wiederholen.

0 Stimmen

Und Sie können dieses Makro für später speichern, wenn Sie wollen, oder es einfach mit der Bearbeitungssitzung sterben lassen, wenn Sie es später nicht mehr brauchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X