it-swarm.com.de

Unterschiede zwischen Emacs und Vim

Was sind die praktischen Unterschiede zwischen Emacs und Vim, ohne auf ein religiöses Argument einzugehen, warum einer besser ist als der andere? Ich suche das eine oder andere zu lernen, aber mir ist klar, dass die Lernkurve für jedes hoch ist und ich mich nicht entscheiden kann. Ich habe noch nie einen Editor dieses Typs verwendet (ich habe immer IDEs verwendet), also ist alles, was einem Neuling hilft, ein Plus.


Bevor ein Flammenkrieg beginnt: Ich frage nicht, was besser ist, ich frage nach den Unterschieden zwischen den beiden. Ich hätte gerne einen objektiven Vergleich.

657
Sasha Chedygov

(der folgende Text ist meiner Meinung nach keine Tatsache oder Beleidigung)

Von Emacs wird erwartet, dass es rund um die Uhr geöffnet ist und sich innerhalb des Programms befindet. Fast alles, was Sie tun, können Sie von dort aus erledigen. Sie schreiben Ihre eigenen Erweiterungen, verwenden sie für Notizen, Organisation, Spiele, Programmierung, Shell-Zugriff, Dateizugriff, Musikhören und Surfen im Internet. Es dauert Wochen und Wochen, bis Sie damit zufrieden sind und dann die ganze Zeit neue Dinge lernen. Sie werden genervt sein, wenn Sie keinen Zugriff darauf haben und Ihre Konfiguration ständig ändern. Sie werden nicht in der Lage sein, Emacs-Versionen anderer Leute einfach zu verwenden, und es wird nicht einfach installiert. Es verwendet LISP, was großartig ist. Sie können alles daraus machen, was Sie wollen. (irgendetwas überhaupt)

Mit Vim ist es fast immer vorinstalliert. Es ist schnell. Sie öffnen eine Datei, bearbeiten sie schnell und beenden sie dann. Sie können mit der Grundkonfiguration arbeiten, wenn Sie sich auf einem anderen Computer befinden. Es ist nicht ganz so bearbeitbar, aber es ist immer noch viel besser als die meisten Texteditoren. Es erkennt, dass Sie die meiste Zeit lesen/bearbeiten und nicht tippen, und beschleunigt diesen Teil. Sie leiden nicht unter Emacs Pinkie. Es ist nicht so ärgerlich. Es ist einfacher zu lernen.

Auch wenn ich Emacs jeden Tag den ganzen Tag benutze (und liebe), wenn Sie nicht vorhaben, viel Zeit in dem von Ihnen gewählten Programm zu verbringen, würde ich mich für vim entscheiden

462
James Brooks

Vim ist keine Shell. Und es kommuniziert nicht gut mit Unterprozessen. Dies ist fast beabsichtigt, während diese Elemente in Emacs beabsichtigt sind. Dies bedeutet, dass einige Dinge, wie das Einbetten eines Debuggers oder eines Interpreters (was eine Art IDE ergibt), in Vim schwierig sind.

Außerdem wird auf die Emacs-Verknüpfungen hauptsächlich über Modifikatoren zugegriffen, und offensichtlich ist die Vim-Oberfläche bekanntermaßen modalisiert, sodass auf eine absurde Menge direkter Tasten zur Manipulation zugegriffen werden kann.

Emacs war der einzige Editor der beiden, der programmierbar war, und während Vim eine Menge seltsamer Ebenen in seiner Programmierbarkeit hat, mit dem Hinzufügen von Python und Ruby Bindungen (und mehr) Ich vergesse), Vim ist auch auf die meisten Arten programmierbar, die Ihnen am Herzen liegen.

Ich benutze Vim und bin ziemlich zufrieden damit.

130
Svend

Vim:

  • besser als einfacher Editor (weniger Schlüssel für einfache Aufgaben erforderlich)
  • aktivere Scripting-Community - Interne Sprache: Vimscript
  • ein zentrales Repository für Skripte, Plugins, Farbschemata, ...
  • auch erweiterbar in Python, Ruby
  • kann portabel gemacht werden (emacs hat damit ein paar probleme)

Emacs:

  • standardmäßig nicht modal (die meisten heutigen Redakteure haben diesen Ansatz gewählt). Es gibt jedoch böser Modus , das das Verhalten von Vim nachahmt.
  • leistungsstärkere Sprache zum Erweitern (elisp ist eine vollständige Sprache, und in Emacs können Sie praktisch alles neu definieren; in vim können Sie eingebaute Funktionen des Editors nicht neu definieren. Andererseits ist vimscript den heutigen dynamischen Sprachen in elisp relativ ähnlich.) ähnelt eigentlich gar nichts)
  • ausziehbarer
  • exzellente Unterstützung für GNU Tools (der Haufen von ihnen)

Persönlich bevorzuge ich vim - es ist klein, macht das, was es tun soll, und wenn ich eine ausgewachsene IDE wünsche, öffne ich VS. Der Ansatz von Emacs, ein Editor zu sein, der ein IDE (oder sollte ich sagen ein OS) sein möchte, aber nicht ganz ist, ist meiner Meinung nach veraltet. Früher war es nicht mehr sinnvoll, einen E-Mail-Client, einen FTP-Client, Tetris usw. in einem Paket (Emacs) zu haben.

Beide sind jedoch ein Thema religiöser Diskussionen zwischen Programmierern und Nutzern der Superuser-Community, und in dieser Hinsicht eignen sie sich hervorragend, um Flammenkriege auszulösen, wenn sie in Kontakt gebracht werden (in demselben Satz/derselben Frage).

102
Rook

Wenn Sie nach einer objektiven Analyse der beiden Herausgeber suchen, schauen Sie sich ihre Herkunft und die Philosophie an, die hinter ihren jeweiligen Entwürfen steckt. Überlegen Sie, welches am besten zu Ihnen passt, und lernen Sie es (und lernen Sie es und lernen Sie es, da es einige Zeit dauert, bis Sie den wahren Nutzen von IDE herausfinden). Eine Einführung in die Anzeigebearbeitung mit Vi wurde von Bill Joy und Mark Horton geschrieben und erklärt, warum er sich für das modale Design und die Begründung verschiedener Tastenanschläge entschieden hat (es hilft mir, daran zu denken, dass STRG-W + W (wird) Wechseln Sie zum nächsten W Fenster. Dies gilt auch für STRG W + STRG W, für den Fall, dass Sie die STRG-Taste länger gedrückt halten.

Hier ist ein Link zu Emacs-Zeitleiste und der Verweis auf Multics Emacs-Artikel. Hier ist ein RMS Artikel über Emacs , wo ich sehe, dass der Stress auf einem programmierbaren Texteditor liegt (sogar schon 1981 und früher).

Ich habe die Emacs-Papiere nicht gelesen, aber Bill Joys Vi-Papier ein paarmal gelesen. Beide sind alt, aber Sie werden trotzdem die Philosophie verstehen und sich vielleicht für das aktuelle Tool entscheiden (vim 7.x oder emacs 25?)

Edit: Ich habe vergessen zu erwähnen, dass es Geduld und Vorstellungskraft erfordert, diese beiden Artikel zu lesen, da man beim Lesen die Zeit zurückversetzt. Aber es lohnt sich.

47
Senthil Kumaran
  1. Vim war immer schneller als Emacs. Ich sage, dass auf jedem Computer eine sofort einsatzbereite Installation von Vim schneller startet als eine sofort einsatzbereite Installation von Emacs. Und ich neige dazu zu glauben, dass Vim nach einer moderaten Menge an Anpassungen immer noch schneller startet als Emacs.

  2. Danach war der andere praktische Unterschied der Emacs-Modus. Sie vereinfachen Ihr Leben erheblich, wenn Sie XML, C/C++/Java/Was auch immer, LaTeX und die beliebtesten Sprachen bearbeiten, die Sie sich vorstellen können. Sie machen Lust, den Editor für lange Sitzungen und Arbeiten offen zu halten.

Alles in allem werde ich sagen, dass Vim Sie für kurze, schnelle Bearbeitungsaufgaben dorthin zieht. während Emacs Sie ermutigt, lange Sessions zu absolvieren.

43
Yawar

VI ist immer verfügbar und wird im verkrüppelten Einzelbenutzermodus, mit kaputten Grafiken, ohne Tastaturbelegung und langsamen Verbindungen ausgeführt. Daher sollten Sie wissen, wie Sie einfache Dateien nur für Sysadmin-Aufgaben bearbeiten können.

Emacs ist eine vollständige Benutzeroberfläche in einem Editor. Die Idee ist, dass Sie Emacs starten, wenn Sie die Maschine starten und sie niemals verlassen. Es ist möglich, Tausende von Sitzungen zu haben.

Ob sich das Erlernen der Funktionen von Emacs im Vergleich zur Verwendung eines GUI-Editors/einer IDE und der Verwendung von Python/awk/etc für zusätzliche Aufgaben lohnt, liegt bei Ihnen.

38
Martin Beckett

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

24
Joe Casadonte

Ich fing mit vi an, ging zu Emacs und dann zu Vim. Ich habe darüber nachgedacht, Emacs auszuprobieren, um zu sehen, was sich in den letzten fünf Jahren geändert hat. (Apropos IDE, ich war schon eine Weile bei Eclipse, aber ich bevorzuge mein Terminalfenster, das meinen Mac mit der Linux-Box meines Mannes verbindet).

Das Ausschneiden und Einfügen hat mich in letzter Zeit gestört. Das Ausschneiden und Einfügen in Vim erfordert mehr Schritte als in Emacs, IIRC. Das Einfügen eines Browsers in ein Terminalfenster ist irritierend, es sei denn, Sie tun etwas Besonderes, das mir nicht gefällt, und ich bin mit dem seltsamen Einzug einverstanden. Ich denke, das Bearbeiten mehrerer Dateien in Emacs war einfacher. Zumindest von einer Datei zur nächsten springen, wenn Sie beide auf dem Bildschirm haben.

Ich habe weder mit den ausgefallenen Funktionen von vi noch mit Emacs gespielt, da ich mich nur der Codierung widmen möchte. Alles, was ich brauche, sind die hübschen Farben und die richtige Konvertierung von Tabs in Leerzeichen (besonders wichtig bei Python).

Ich denke, es hängt alles davon ab, ob Sie :wq oder Ctrl-x Ctrl-s (IIRC) verwenden möchten, um eine Datei zu speichern, wenn Sie sich nicht für das schicke Zeug interessieren.

@mgb war richtig. Ich war vor ein oder zwei Monaten unter Linux, um etwas in einer Debian-Distribution zu reparieren. vi war der einzige verfügbare Editor.

13

Es scheint, dass bereits eine Antwort ausgewählt wurde, aber der große Unterschied für mich war immer der modale vs. nicht-modale. Vim ist modal, was bedeutet, dass Optimierungen basierend auf einer Reihe von Nutzungsmodi vorgenommen werden. Zumindest habe ich das immer so gesehen. Dies macht die Verwendung von Vim zu einer anderen Erfahrung, da Sie einer Umgebung sagen, dass sie auf den Text reagieren soll, anstatt einen Arbeitsbereich zu haben, in den Sie Code eingeben. Aus diesem Grund sagen die Leute, dass Sie mit Vim wirklich eine Sprache lernen. Die Leiste: wq und: s/foo/ist Teil einer Shell-ähnlichen Umgebung, in der Text bearbeitet und gelesen wird.

Emacs hingegen ist den meisten Editoren/Textverarbeitungsprogrammen/usw. Viel näher. Sie sehen heute. Sie haben einen Arbeitsbereich mit einer hochprogrammierbaren Oberfläche. Aus diesem Grund sieht man Dinge wie E-Mail, IRC, Muscheln usw. Als Programmierer ist es leicht zu denken, wenn man sagt: "Nimm die Zeilennummer, in der ich mich befinde, und mach etwas mit den Informationen". Der Wunsch, den Editor zu verlassen, wird geringer, da Sie, anstatt zu beenden, eine andere App/Sprache zu öffnen und bestimmte Textaufgaben zu erledigen, Emacs haben, in dem Sie diese Aufgaben im Rahmen Ihres Editors erledigen können.

Die beiden Ideen sind nicht notwendigerweise gegensätzlich, aber es ist einfach so, dass sie zwei unterschiedliche Schwerpunkte aufzeigen. Persönlich benutze ich Emacs, aber ich habe Leute gesehen, die Vim wirklich gut kennen und ehrlich sagen können, dass es keine Rolle spielt, für wen Sie sich entscheiden. Ich habe Vim zuerst ausprobiert, aber Emacs hat sich für mich entschieden. Es ist wahr, dass Sie Vim, egal für was Sie sich entscheiden, zumindest einigermaßen beherrschen sollten, da es wirklich immer verfügbar ist.

13
elarson

Für mich sind Emacs Profis,

  • im Tramp-Modus können Sie entfernte Dateien über ssh bearbeiten. genau wie lokale Dateien.
  • tramp-mode + dired = voll ausgestatteter sftp client
  • unterstützung für jede Sprache, die Sie jemals brauchen werden.
  • eingebauter Terminal-Emulator (Term-Modus), so dass ich weiterhin codieren kann, ohne zwischen Anwendungen zu wechseln.
  • erweiterbarkeit alles, was Sie nicht mögen, können Sie mit LISP ändern.
10
Hamza Yerlikaya

Es gibt einen großen Unterschied im Alltag - Vim (oder eine beliebige vi-Variante) ist von Natur aus modal (Sie wechseln in Befehlsmodi, in denen Sie keine Änderungen vornehmen können) und Emacs (zusammen mit den meisten anderen Editoren) ) sind nicht.

Wenn Sie Menüs und dergleichen verwenden, müssen Sie in Vim nicht unbedingt in den Befehlsmodus wechseln - zuerst. Aber um nur einen winzigen Bruchteil der Kraft von Vim zu nutzen, werden Sie. Das ist der Kern der Vim/Emacs-Debatte.

Persönlich denke ich auch, dass Emacs viel erweiterbarer ist. Sie können Elisp-Pakete für viele Dinge finden.

Ich bin jedoch neugierig, warum Sie darüber nachdenken, eine dieser Methoden über eine traditionellere IDE zu lernen. Wofür möchten Sie eines davon lernen?

Über beide Redakteure ist eine Menge gesagt worden, aber ich muss nur meine 5 Pence hinzufügen. Beide Editoren sind wundervoll und Sie können mit keinem von beiden etwas falsch machen.

Ich bin jetzt seit ungefähr 15 Jahren ein vi/vim-Benutzer. Ich habe mehrmals versucht, auf Emacs umzusteigen, aber jedes Mal stellte ich fest, dass vim das Fehlende sofort erledigen kann, ohne eine LISP-Erweiterung schreiben oder etwas installieren zu müssen.

Für mich ist der Hauptunterschied in den Editoren, mit denen vim die Umgebung/das Betriebssystem verwendet, während emacs versucht, sie zu kapseln oder zu ersetzen. Sie können beispielsweise ein Datum in Ihren Text einfügen, indem Sie Folgendes eingeben: r! Date in vim oder calendar with: r! Cal 1 2014, oder sogar den Inhalt Ihres Puffers durch die hexadezimale Version des Inhalts ersetzen. Z.B. :%! xxd, editiere hex und kehre zurück mit:%! xxd -r und vielen anderen Verwendungen wie builtin grep, sed, etc.

Ein weiteres Beispiel ist die Verwendung mit jq und gron. Z.B. Füge json blob in den Editor ein und starte es für die Transformation:

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

OR

:%!jq .path.to.stuff

Jeder der weitergeleiteten Befehle oben kann separat über :%!<command> ausgeführt werden, wobei % das gesamte Dokument bedeutet, aber auch für Auswahl, ausgewählte Zeilen usw. ausgeführt werden kann. Hier kann gron output verwendet werden als jq Pfad.

Sie erhalten auch die EX-Stapelbearbeitungsfunktion, z. Ersetzen Sie bestimmte Wörter, formatieren Sie den Code neu, konvertieren Sie DOS-> UNIX-Zeilenumbruchzeichen und führen Sie ein Makro für beispielsweise 100 Dateien gleichzeitig aus. Mit ex ist das ganz einfach. Ich bin mir nicht sicher, ob Emacs etwas ähnliches hat.

Mit anderen Worten, IMHO vim nähert sich der Unix-Philosophie. Es ist im Allgemeinen einfacher und kleiner, aber wenn Sie Ihr Betriebssystem und Ihre Tools kennen, werden Sie wahrscheinlich nicht mehr benötigen, als es (VIM) zu bieten hat. Ich mache nie.

Da vi auf jedem Unix-/Linux-System standardmäßig installiert ist, sollten Sie lernen, zwei Tools zu verwenden, die dasselbe tun. Natürlich bieten einige Systeme mg oder ähnliches an, aber definitiv nicht alle. Unix + Vi <3.

Nun, nur meine 5 Pence.

10
Alex

Ich möchte hier ein Zitat aus dem Buch "Die Kunst der UNIX-Programmierung" einfügen:

Viele Leute, die regelmäßig sowohl vi als auch Emacs verwenden, tendieren dazu, sie für verschiedene Dinge zu verwenden, und es ist wertvoll, beide zu kennen.

Im Allgemeinen eignet sich vi am besten für kleine Aufträge - schnelle Antworten auf E-Mails, einfache Änderungen an der Systemkonfiguration und dergleichen. Dies ist besonders nützlich, wenn Sie ein neues System (oder ein Remote-System über ein Netzwerk) verwenden und Ihre Emacs-Anpassungsdateien nicht zur Hand haben.

Emacs bietet sich für erweiterte Editiersitzungen an, in denen Sie komplexe Aufgaben erledigen, mehrere Dateien ändern und die Ergebnisse anderer Programme während der Sitzung verwenden müssen. Für Programmierer, die X auf ihrer Konsole verwenden (was typisch für moderne Unixe ist), ist es normal, Emacs kurz nach der Anmeldung in einem großen Fenster zu starten und für immer laufen zu lassen, wobei möglicherweise Dutzende von Dateien und sogar Programme in mehreren Emacs-Unterfenstern ausgeführt werden.

Was ich hier wirklich hervorheben möchte, ist das: "Viele Leute finden es wertvoll, beide zu kennen."

8
Andriy Tykhonov

Vorteile von Emacs

  • Emacs hat sowohl eine nicht-modale (standardmäßig) als auch eine modale Schnittstelle (z. B. kann es vim und vi über Evil, Viper oder Vimpulse emulieren).

  • Eines der am häufigsten portierten Computerprogramme. Es läuft im Textmodus und unter grafischen Benutzeroberflächen auf einer Vielzahl von Betriebssystemen, einschließlich der meisten Unix-ähnlichen Systeme (Linux, verschiedene BSDs, Solaris, AIX, IRIX, macOSetc.), MS-DOS, Microsoft Windows, AmigaOS, und OpenVMS. Unix-Systeme, sowohl kostenlose als auch proprietäre, bieten häufig Emacs, die mit dem Betriebssystem gebündelt sind.

  • Die Emacs-Serverarchitektur ermöglicht es mehreren Clients, eine Verbindung zu derselben Emacs-Instanz herzustellen und die Pufferliste, den Kill Ring, den Rückgängig-Verlauf und andere Zustände gemeinsam zu nutzen.

  • Umfangreiches Online-Hilfesystem mit sofort dokumentierten Tastenkombinationen, Funktionen und Befehlen.

  • Erweiterbare und anpassbare LISP-Programmiersprachenvariante (Emacs LISP) mit folgenden Funktionen:

  • Ein leistungsfähiger und erweiterbarer Dateimanager (dired), ein integrierter Debugger sowie eine Vielzahl von Entwicklungs- und anderen Tools.

  • Wenn jeder Befehl eine Emacs LISP-Funktion ist, können Befehle an DWIM (Do What I Mean) gesendet werden, indem programmgesteuert auf vergangene Aktionen und den Dokumentstatus reagiert wird. Ein Befehl zum Wechseln oder Teilen eines Fensters kann beispielsweise zu einem anderen Fenster wechseln, sofern eines vorhanden ist, oder bei Bedarf ein Fenster erstellen. Dies reduziert die Anzahl der Tastenanschläge und Befehle, an die sich ein Benutzer erinnern muss.

  • Msgstr "Ein Betriebssystem innerhalb eines Betriebssystems". Mit Emacs LISP können Emacs weit über die Bearbeitungsfunktionen hinaus programmiert werden. Selbst eine Basisinstallation enthält mehrere Dutzend Anwendungen, darunter zwei Webbrowser, Newsreader, mehrere Mailagenten, vier IRC Clients, eine Version von ELIZA und eine Vielzahl von Spielen. Alle diese Anwendungen sind überall verfügbar, wo Emacs ausgeführt wird, mit derselben Benutzeroberfläche und Funktionalität. Ab Version 24 enthält Emacs einen Paketmanager, mit dem zusätzliche Anwendungen wie alternative Webbrowser, EMMS (Emacs Multimedia System) und mehr einfach installiert werden können. Es sind auch zahlreiche Pakete für die Programmierung verfügbar, darunter einige, die auf bestimmte Sprach-/Bibliothekskombinationen oder Codierungsstile abzielen.

Vorteile von vi-ähnlichen Editoren

  • Bearbeitungsbefehle können zusammengestellt werden
  • Vi hat eine modale Schnittstelle (die Emacs emulieren kann)
  • In der Vergangenheit wurde vi schneller geladen als Emacs.
  • Obwohl es eng mit der Tradition von UNIX verbunden ist, läuft es auf allen Systemen, die die Standard-C-Bibliothek implementieren können, einschließlich UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD und POSIX-kompatibel systeme.
  • Erweiterbar und anpassbar durch Vim-Skripte oder APIs für interpretierte Sprachen wie Python, Ruby, Perl und Lua
  • Allgegenwärtig. Grundsätzlich sind in allen Unix- und Unix-ähnlichen Systemen vi (oder eine Variante) integriert. Vi (und ex, aber nicht vim) ist im POSIX-Standard angegeben.
  • Systemrettungsumgebungen, eingebettete Systeme (insbesondere mit Busybox) und andere eingeschränkte Umgebungen enthalten häufig vi, jedoch keine Emacs.

Quelle: https://en.wikipedia.org/wiki/Editor_war

8
artamonovdev

Für mich hat emacs bessere Entwicklungstools (nicht nur tagsbasierte Tools).

8
bmeric

Jetzt müssen Sie wegen Spacemacs nicht einmal mehr über den Unterschied zwischen diesen beiden nachdenken. Es ist eine Community-gesteuerte Emacs-Distribution.

Wie gesagt,

Der beste Editor ist weder Emacs noch Vim. Es sind Emacs und Vim.

Spacemacs kombiniert das Beste von Emacs und Vim, was Ihnen das Leben und die Arbeit erheblich erleichtert.

Es hat auch ein anständiges Logo.

Siehe Screenshot unten,

http://spacemacs.org/doc/img/spacemacs-python.png

8

Der größte Unterschied für mich bei der Wahl von Emacs gegenüber Vim war die integrierte GDB-Unterstützung in Emacs. Vim hat dies nicht in seiner Standarddistribution enthalten und das Projekt zur Integration von gdb und vim war fast unmöglich, um mit MacVim arbeiten zu können

5
Grant Limberg

Emacs verfügt über einen Viper-Modus, der in gewissem Sinne eine Reihe von Funktionen bietet (mit Ausnahme der in Welche Vim-Funktionen fehlen in Emacs mit Viper und Vimpulse? ).

vi (und VIM IIRC) sind leichter (sie können Dateien direkt bearbeiten), bieten jedoch weniger Funktionen (Unterprozesskommunikation, Erweiterungssprache).

5
Trey Jackson

Es ist wie Äpfel und Orangen. Beide haben unterschiedliche Design und Philosophie. Vim ist ein Texteditor, während Emacs ein LISP-Interpreter für die Textbearbeitung ist.

Ich benutze Vim, weil es schnell, flink und wirklich gut in der Manipulation von Texten ist. Es hat eine zusammensetzbare natürliche Schlüsselbindung, die Ihre Entwicklungsaufgaben wirklich harmonisch machen kann. Vim basiert auf der einfachen * nix-Philosophie, eine Sache wirklich gut zu machen - nämlich die Textmanipulation.

Das Erweitern von Vim mit bash/zsh und tmux ist normalerweise einfach und ermöglicht es Ihnen, eine Menge Dinge zu lernen. IMHO ist dies eine gute Lernkurve. Der Schlüssel ist zu lernen, wie man diese Dinge integriert, um eine größere funktionierende Anwendung zu erhalten. Mit Vim müssen Sie die Integration lernen, da sie sich nur dann auf natürliche Weise integrieren lässt, wenn Sie wissen, wie sie funktioniert. Eine andere sinnvolle Erweiterung, die ich benutze, ist Tig. Es ist ein ncurses-basiertes Git-Frontend. Ich habe nur eine Bindung, die Tig still öffnet, und dann mache ich das ganze Git-Zeug dort.

Es ist Sache des Endbenutzers, zu entscheiden, was am besten funktioniert. Dass Emacs und Vim den Test der Zeit bestanden haben, ist ein Beweis für ihre Wertigkeit. Schließlich braucht ein guter Programmierer nur einen Stift und ein Papier, um kreativ zu sein. Gute Algorithmen benötigen keine Editoren, um sie zu unterstützen. Probieren Sie beide aus und sehen Sie, was Sie produktiver macht. Und lernen Sie Designmuster aus beiden Programmen, denn es gibt viel zu lernen und zu entdecken!

4
Nishant

Ein Ikterus-Gesichtspunkt:

vi (nicht vim) ist eine berufliche Notwendigkeit. Sie haben immer eine Form von vi zur Verfügung, egal in welcher Umgebung. Sie können in vi sein, wenn Sie in Emacs sind, Sie können in vi sein, um Bash-Befehle in Unix-Land zu erstellen.

Sogar Microsquish muss vi unterstützen (obwohl es gut versteckt ist), da die Regierung und das Unternehmen die veröffentlichten Standards einhalten.

Meiner Meinung nach ist es ein Job-Handicap, wenn Sie in einem geschäftigen Umfeld arbeiten - nicht in einer Entwicklungsumgebung oder im akademischen Bereich -, viel über einen ausgefallenen Redakteur zu wissen. Lernen Sie nicht alle ausgefallenen Tricks in Vim oder Emacs und entwickeln Sie keine Reihe von Makros, damit sich die Bearbeitungsumgebung Ihrem Willen anpasst. Es ist eine enorme Zeitspanne, die Ihnen im Weg steht, wenn Sie sich um verschiedene Maschinen kümmern, die Sie in einer Fabrikumgebung wahrscheinlich nicht rechtfertigen können.

Lesen Sie die Zeitung von Bill Joy - es ist eine sehr kompetente, vielleicht sogar schöne technische Übung, um Klartext sehr, sehr schnell zu bearbeiten. Hier gilt die Parito-Regel: 80% der Früchte befinden sich in 20% der Körbe. Klartext sehr, sehr schnell zu bearbeiten ist der springende Punkt der Bearbeitungskompetenz - alles andere ist optional - und manchmal auch verletzend.

3
user3305072

Emacs ist wirklich eher ein do everything Programm und vi (m) ist wirklich nur ein Editor. Wenn Sie Text bearbeiten, sind beide in Ordnung, aber ich bevorzuge Emacs, einfach weil ich einen aus der Startzeile verschieben muss, um mich fortzubewegen, und im Befehlsmodus weiterhin die falschen Dinge eingeben muss. Wenn Sie dieses Problem nicht haben, kann vi (m) der Editor für Sie sein.

2
qwertyuiop924

Wenn Sie häufig von Standort zu Standort wechseln oder sich an Produktionssystemen anmelden müssen, ist vim der richtige Weg.

Auf allen * nix-Rechnern ist standardmäßig vi installiert.

Die meisten Sysdamins bevorzugen ksh als Standard-Shell. ksh verwendet die Befehlstasten vi (oder emacs), um den Verlauf zu durchsuchen und die Befehlszeile zu bearbeiten.

Wenn Sie vi nicht gut kennen, sind Sie stark behindert, wenn Sie sich in einer Unix-Box mit einer Standardkonfiguration anmelden.

Schon aus diesem Grund würde ich vim als Ihren normalen täglichen Redakteur empfehlen. Ich habe gesehen, wie Emacs-Fans sich die Haare reißen und versuchen, Konfigurationsdateien auf einem Bare-Bones-Unix-Server zu ändern.

1
James Anderson

vim ist ein praktischer Editor. Geben Sie einfach vim filename ein, um die Datei zu öffnen, zu bearbeiten, zu speichern und zu schließen.

emacs ist ein "Betriebssystem", das sich als Editor ausgibt. Sie können eval Code eingeben, um sein Verhalten zu ändern und es nach Ihren Wünschen zu erweitern. Ein mode zum Empfangen/Senden von E-Mails auf einem Emacs ist wie eine E-Mail-Software auf einem Betriebssystem.

Wenn Sie eine einfache Bearbeitung vornehmen, zum Beispiel eine Konfigurationsdatei ändern, verwende ich vim.

Ansonsten verlasse ich nie emacs.

1
Richard

Ich denke, der Hauptunterschied ist das Designziel. VIM ist für UNIX als Arbeitseditor vorgesehen. Emacs ist für GNU und LISP-Hacker gedacht, hat also ein gemischtes Design-Element.

Ich benutze vim auf meiner Workstation, während ich auch Emacs liebe.

0
7xEquation

In Ihrer Frage haben Sie nicht erwähnt, dass Sie möchten, dass es in LISP programmiert wird! Aber als Sie Ihre Antworten kommentiert haben, habe ich verstanden, dass Sie tatsächlich eine LISP-Programmierschnittstelle wollen.

Vergessen Sie für diese genaue Aufgabe einfach Vi. Die Integration von Emacs in LISP ist wunderbar! Sie sollten SLIME verwenden. Sie werden dann eine wunderbare Integration in die REPL haben und in der Lage sein, eval Funktionen, Puffer oder Dateien direkt in einen laufenden Interpreter in einem Emacs-Puffer zu integrieren und vieles mehr ...

0

Ich arbeite seit ungefähr 2 Jahren mit Spacemacs und seit ungefähr einem Jahr mit Neovim in einer Produktions-/Forschungsumgebung. Spacemacs ist ein Emac mit ein paar netten zusätzlichen Funktionen wie Ebenen usw. Und Neovim ist wieder eine Gabelung von Vim mit einigen zusätzlichen Funktionen.

Ich bin mit beiden in Bezug auf die Erfahrung ziemlich unzufrieden. Und ich bin immer noch auf der Suche nach einer langfristigen Lösung für meine Textbearbeitungsanforderungen.

Hier ist ein einfacher Vergleich:

  • Neovim, Vim, Emacs, Spacemacs usw. all diese Editoren verbrauchen weniger Ressourcen als die meisten anderen Editoren.

  • Neovim/vim ist etwas schneller als Emacs, merklich schneller als Spacemacs.

  • In Bezug auf die Bearbeitungserfahrung. Ich kann leicht sagen, dass sich Emacs-Pakete überlegen anfühlen. Ich denke, das liegt daran, dass sie sich besser in den Kern von Emacs einfügen.

  • Vimscript ist nett und es gibt sicherlich auch großartige Projekte im VIM-Ökosystem. Das Gute ist, dass sie besser dokumentiert sind als die meisten Emacs-Projekte, die ich bisher gesehen habe.

  • Beides kann je nach verwendetem Paket problematisch sein. Spacemacs neigen dazu, einzufrieren, und Neovim neigen dazu, beängstigende Fehlermeldungen anzuzeigen. Wählen Sie also Ihr Gift dort aus.

  • Modales Editieren in vim ist kein intuitives Konzept, aber sobald Sie sich daran gewöhnt haben, möchten Sie es auf jeden Fall. Beide Editoren bieten das an.

0
Kaan E.

Ich bin ein Emacs-Fan, aber ermutige andere Entwickler, VI zu lernen, weil:

  1. sie können VI verwenden, um die Emacs-Makefiles zu bearbeiten.
  2. VI enthält ed-Befehle und jeder UNIX-Benutzer sollte ed und sed kennen.

Ich habe einige Kommentare bemerkt, dass VIM schneller startet als Emacs. Wenn Ihnen das wirklich wichtig ist, führen Sie den Emacs im Servermodus aus und geben Sie als Alias ​​'emacs' an 'emacsclient'. Der Client ist superschnell, da er lediglich auf den Server tippt und ihm mitteilt, welche Datei Sie bearbeiten möchten. Unter MacOSX ist emacsclient nur 33 KB groß, während emacs 287 MB groß ist.

Ich bin mir nicht sicher, ob dies bei moderner Hardware notwendig ist. Auf meinem MacBook Pro (2013 Retina) wird der Emacs fast augenblicklich geladen, wenn ich ihn über die Shell ausführe. Ich erkenne überhaupt keine Pause. Wenn ich Emacs.app (die GUI-Version) ausführe, kann es bis zu 3 Sekunden dauern.

Die meisten Beschwerden, die ich über Emacs höre, scheinen von Leuten zu kommen, die falsch über Emacs informiert sind. Nachdem ich seit 1982 sowohl vi als auch emacs verwendet habe, kann ich mich definitiv an eine Zeit erinnern, in der emacs viel langsamer geladen wurden als vi und den größten Teil des physischen Speichers in meinen frühen UNIX-Boxen verwendeten. 20 Jahre.

Eine Beschwerde, die ich zugeben werde, ist "Emacs Pinkie". Das hat mich nie gestört, als ich jünger war. Jetzt, wo ich 58 bin, tut es meinem kleinen Schatz ein bisschen weh, wenn er wiederholt auf die Steuertaste zugreift, um mit dem Emac zu arbeiten. Dies gilt insbesondere für die MacBook Pro-Tastatur, bei der die Steuerung um eine Position nach rechts verschoben wird, um Platz für die "fn" -Taste zu schaffen. Es ist nicht annähernd so ärgerlich, wenn die Steuerung die untere linke Taste ist.

0
Phil Harbison

Tastenanschlag-Ausführung ::: vi-Bearbeitung behält jede Permutation von eingegebenen Tasten bei. Dadurch wird im Entscheidungsbaum ein Pfad erstellt, der jeden Befehl eindeutig identifiziert, während Emacs-Befehle eine Kombination aus unmittelbar ausgeführten Tasten sind, bei der der Benutzer die Wahl hat, ob er einen Befehl verwenden möchte oder nicht.

Speichernutzung und Anpassbarkeit ::: vi ist ein kleineres und schnelleres Programm mit einer begrenzten Anpassungskapazität, während der Start von Emacs länger dauert und mehr Speicher benötigt. Es ist jedoch in hohem Maße anpassbar und enthält eine Vielzahl von Funktionen, da es im Wesentlichen eine Ausführungsumgebung für ein LISP-Programm ist, das für die Textbearbeitung entwickelt wurde.

0