Unterschiede zwischen Emacs und Vim


685

Was sind die praktischen Unterschiede zwischen Emacs und Vim, ohne in einen religiösen Streit darüber zu geraten, warum einer besser ist als der andere ? Ich möchte das eine oder andere 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), daher ist alles, was einem Neuling hilft, ein Plus.


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


3
Wenn Sie einen Mac (OSX) verwenden, werden Sie feststellen, dass viele grundlegende Emacs-Cursorbewegungsbefehle praktisch überall funktionieren. (Zum Beispiel funktionieren sie hier, wo ich diesen Kommentar in die Webseite eingebe.) Für Mac-Benutzer ist es also ein systemweiter Vorteil, mindestens die folgende Teilmenge von Emacs zu lernen: ^ A ^ B ^ D ^ E ^ F. ^ K ^ L ^ N ^ O ^ P ^ T ^ V ^ Y
Matt

2
@ JamesAnderson: Nach meiner Erfahrung ist es das Gegenteil. Ich benutze vim seit 2,5 Jahren und bin dann zu Emacs gewechselt. Den Emacs ist es meistens egal ... "was auch immer für dich funktioniert". Hier ist, was ,salespitchin #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.
Silex

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

1
@ JimmyM.G.Lim Nein, es wird der aktuelle Pager auf dem System verwendet. Wenn Sie ausführen PAGER=cat man, zeigt man Text direkt auf dem Bildschirm an.
SS Anne

1
Vermutlich gab es die "hauptsächlich meinungsbasierte" Polizei nicht, als dies zum ersten Mal gefragt wurde ;-) Ah, einfachere Zeiten ... eine Sache, die ich sagen werde, ist, dass ich es einmal gedacht habe, als ich ein Buch über Emacs gelesen und ausprobiert habe war die Bombe. 3 Wochen Urlaub später stellte ich fest, dass ich alle Tastenanschläge völlig vergessen hatte. vim auf der anderen Seite ist nicht wirklich mein Ding, aber ich kann damit zuverlässig halb funktionieren, wenn es nur gebraucht wird i, esc, wq.
JL Peyret

Antworten:


491

(Der folgende Text ist meiner Meinung nach nicht als Tatsache oder Beleidigung zu verstehen.)

Mit Emacs wird erwartet, dass es rund um die Uhr geöffnet ist und im Programm lebt. Fast alles, was Sie tun, kann von dort aus erledigt werden. 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 ständig neue Dinge lernen. Sie werden verärgert sein, wenn Sie keinen Zugriff darauf haben und Ihre Konfiguration ständig ändern. Sie können die Emacs-Versionen anderer Benutzer nicht einfach verwenden und sie werden nicht nur installiert. Es verwendet Lisp, was großartig ist. Sie können daraus alles machen, was Sie wollen. (überhaupt nichts)

Mit Vim ist es fast immer vorinstalliert. Es ist schnell. Sie öffnen eine Datei, führen eine schnelle Bearbeitung durch und beenden sie dann. Sie können mit der Grundeinstellung arbeiten, wenn Sie sich auf einem anderen Computer befinden. Es ist nicht ganz so bearbeitbar, aber es ist immer noch weitaus 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.

Obwohl ich Emacs jeden Tag den ganzen Tag benutze (und es liebe), es sei denn, Sie beabsichtigen, viel Zeit in dem von Ihnen gewählten Programm zu verbringen, würde ich mich für vim entscheiden


153
Wenn Sie es nicht zur Verfügung haben: Ich schlage vor, Ihre .emacs und .emacs.d in ein Quellcodeverwaltungs-Repo zu stellen. Daher ist es einfach eine Frage der Kasse, Ihr perfektes Emacs-Setup zu erhalten.
Duncan Bayne

7
Sowohl Emacs als auch Vim können unter den oben beschriebenen Problemen leiden: Beide können so konfiguriert werden, dass sie im Vergleich zu ihren Vanilleformen nicht mehr erkennbar sind. Außerdem unterstütze ich die Verwendung eines VCS.
Alexej Magura

11
An welchen Systemen arbeiten Sie, @Radu? Ich habe in den 2010er Jahren noch nie ein reales System gesehen, das real vistatt vimalias war.
ELLIOTTCABLE

9
Vielleicht ist Vim leichter zu lernen als Emacs, aber es ist unglaublich verwirrend, wenn Sie es zum ersten Mal starten, wenn Sie noch keine Erfahrung damit haben! Ich musste Google verwenden, um es schließen zu können, und musste immer noch mehrmals versuchen, es richtig zu machen.
HelloGoodbye

9
Unterschätzen Sie niemals den "vorinstallierten" Vorteil von VIM: Es ist fast immer überall verfügbar und kann mit wenig oder gar keinen Anpassungen verwendet werden. Ich benutze es die ganze Zeit, wenn ich sshzu anderen Maschinen gehe. Deshalb habe ich es zuerst gelernt - und weil meine Freunde VIM kannten und mir helfen konnten. (Unterschätzen Sie auch nicht die Unterstützung von Freunden!)
jvriesem

137

Vim ist keine Muschel. 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 Emacs-Verknüpfungen hauptsächlich über Modifikatoren zugegriffen, und offensichtlich ist die Vim-Oberfläche bekanntermaßen modal und bietet Zugriff auf eine absurde Menge direkter Tasten zur Manipulation.

Emacs war früher der einzige Editor der beiden, der programmierbar war, und während Vim viele seltsame Ebenen in seiner Programmierbarkeit hat, mit der Hinzufügung von Python- und Ruby-Bindungen (und mehr, vergesse ich), ist Vim in den meisten Fällen auch programmierbar du würdest dich darum kümmern.

Ich benutze Vim und bin ziemlich zufrieden damit.


6
Kleines Update: Vim unterstützt eine wesentlich bessere Kommunikation mit Unterprozessen, da in den Versionen 8.0 und 8.1 sogar Terminalpuffer eingeführt wurden, sodass Emacs in dieser Hinsicht etwas näher kommt.
DarkWiiPlayer

110

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, Rubin
  • kann portabel gemacht werden (Emacs hat einige Probleme damit)

Emacs:

  • Standardmäßig nicht modal (die meisten heutigen Redakteure haben diesen Ansatz gewählt). Obwohl es einen bösen Modus gibt, der das Vim-Verhalten nachahmt.
  • leistungsstärkere Sprache für die Erweiterung (elisp ist eine vollständige Sprache, und in Emacs können Sie praktisch alles neu definieren, während Sie in vim die eingebauten Funktionen des Editors nicht neu definieren können. Andererseits ist vimscript den heutigen dynamischen Sprachen während elisp relativ ähnlich ähnelt so ziemlich nichts)
  • erweiterbarer
  • Hervorragende Unterstützung für GNU-Tools (die meisten von ihnen)

Persönlich bevorzuge ich vim - es ist klein, macht das, was es tun soll, und wenn ich eine vollständige IDE wünsche, öffne ich VS. Emacs 'Ansatz, ein Editor zu sein, der eine IDE (oder sollte ich sagen, ein Betriebssystem) sein will, aber nicht ganz ist, ist meiner Meinung nach veraltet. Früher war es sinnvoll, einen E-Mail-Client, einen FTP-Client, Tetris, ... was nicht in einem Paket (Emacs) enthalten zu sein ... heutzutage ist dies nicht mehr der Fall.

Beide sind jedoch ein Thema religiöser Diskussionen unter den Nutzern der Programmierer- und Superuser-Community, und in dieser Hinsicht eignen sich beide hervorragend, um Flammenkriege zu beginnen, wenn sie in Kontakt gebracht werden (im selben Satz / in derselben Frage).


47
"besser als Redakteur" ist ziemlich vage. Ich würde gerne Gründe dafür sehen.
Allen

41
@ Allen - Was ist vage daran? Ich treffe selten Benutzer von vim und emacs, die ein Problem mit dieser Aussage haben. Sogar Hardcore-Emacs-Benutzer akzeptieren dies normalerweise als Tatsache. Haben Sie beide Editoren verwendet? Ich glaube, es ist relativ offensichtlich, dass vim einen Vorteil in Bezug auf die Textbearbeitungsfunktionen hat.
Turm

36
Ich bin ungläubig, dass irgendjemand das als Tatsache akzeptieren würde. Als langjähriger Benutzer von Emacs und einfachem VI habe ich vim einige Male verwendet - aber "besser als Editor" muss sich in meinem Kopf für Emacs entscheiden, wenn auch aus keinem anderen Grund als einer weitaus größeren Auswahl an Haupt- und Nebenmodi um Ihnen beim Tippen zu helfen.
Kendall Helmstetter Gelner

61
Vim ist als Editor besser geeignet, da das Bearbeiten von Text weniger Bewegungen Ihrer Hände und Finger erfordert als Emacs, zumindest ist dies meine Erfahrung.
StackedCrooked

7
Abgesehen davon eignet sich vim effektiv besser zum Bearbeiten: Zeilennummern, visueller Modus, Manipulation wint1.kaist.ac.kr/files/attach/images/59/450/… . FCOL, ich hatte Probleme, Emacs zu bekommen, nur um eine Zeile nach der anderen zu scrollen.
Turm

52

Wenn Sie nach einer objektiven Analyse der beiden Editoren suchen, schauen Sie sich deren Herkunft und die Philosophie hinter ihren jeweiligen Designs an. Überlegen Sie, welches besser zu Ihnen passt, und lernen Sie es (und lernen Sie es und lernen Sie es, denn es dauert einige Zeit, bis Sie seinen wahren Nutzen gegenüber einer IDE entdecken). Eine Einführung in die Anzeige Bearbeiten mit Vi von Bill Joy und Mark Horton geschrieben wurde und er erklärt , warum er modal Design und Gründe für die verschiedenen Tastenanschläge wählen (es hilft mir , daran zu erinnern , dass STRG + W + W (zum nächsten wechselt W indow und Dies gilt auch für STRG W + STRG W, falls Sie die STRG-Taste länger gedrückt halten.

Hier ist ein Link zur Emacs-Zeitleiste und der Verweis auf das Multics Emacs-Papier. Hier ist ein RMS-Artikel über Emacs , in dem ich sehe, dass der Schwerpunkt auf einem programmierbaren Texteditor liegt (bereits 1981 und früher).

Ich habe die Emacs-Papiere nicht gelesen, aber ich habe Bill Joys vi-Papier ein paar Mal gelesen. Beide sind alt, aber Sie werden trotzdem die Philosophie verstehen und können das aktuelle Tool verwenden (vim 7.x oder emacs 25?).

Bearbeiten: Ich habe vergessen zu erwähnen, dass es Geduld und Fantasie erfordert, diese beiden Artikel zu lesen, da Sie beim Lesen in der Zeit zurückversetzt werden. Aber es lohnt sich.


43
  1. Vim war immer schneller als Emacs. Ich sage, dass auf jedem Computer die sofort einsatzbereiten Installationen von Vim schneller gestartet werden als die sofort einsatzbereiten Installationen von Emacs. Und ich neige dazu zu glauben, dass Vim nach einer moderaten Anpassung von beiden immer noch schneller als Emacs startet.

  2. Danach war der andere praktische Unterschied der Emacs-Modus. Sie erleichtern Ihnen das Bearbeiten von XML, C / C ++ / Java / was auch immer, LaTeX und den beliebtesten Sprachen, die Sie sich vorstellen können, erheblich. 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, für lange Sitzungen einzutauchen.


1
Ich glaube nicht, dass Modi das Leben einfacher machen, im Gegenteil. Und Larry Tesler denkt das auch .
Eliran Malka

2
Wie helfen die Modi von Emacs beim Codieren? (Ich bin neu darin ...)
Jvriesem

4
Vor langer Zeit habe ich aus vier Gründen von vi zu emacs gewechselt: (a) ein Klick, um zum nächsten Compilerfehler zu gelangen, (b) gdb-Integration, (c) grep und find-grep. Ist es jetzt möglich, diese Dinge in vim zu tun?
zzz777

"Vim war immer schneller zu starten als Emacs" - wenn Sie einen Emacs-Server am Laufen halten, ist das Starten des Emacs-Clients sehr schnell. Ich habe Skripte dafür, die ich (mit git) auf allen meinen Computern repliziere. (Ich * benutze * eigentlich auch vim; es hängt immer davon ab, wo ich bin und was die Aufgabe ist)
Jay

"Vim war immer schneller zu starten als Emacs" - auch mit use-packageund seiner :deferOption öffnet sich mein Emacs fast sofort. Ich habe sogar die Verwendung von Emacsclient aufgegeben.
Jay

37

VI ist immer verfügbar und läuft auf dem am meisten verkrüppelten Einzelbenutzermodus, fehlerhaften Grafiken, ohne Keymap und Slow Link-Computer. Es lohnt sich also zu wissen, wie einfache Dateien darin nur für Sysadmin-Aufgaben bearbeitet werden.

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 es sich lohnt, die Funktionen von Emacs zu erlernen, verglichen mit der Verwendung eines GUI-Editors / einer IDE und der Verwendung von Python / awk / etc für zusätzliche Aufgaben, liegt bei Ihnen.


2
Ich kenne VI aus genau diesen Gründen - aber heutzutage würde ich sagen, dass es ziemlich unwahrscheinlich ist, dass Sie auf ein UNIX-System ohne mindestens eine grundlegende EMACS-Installation stoßen, und dass dies eine schlechte Shell-Umgebung erträglicher machen kann.
Kendall Helmstetter Gelner

3
Oder Marmelade Busybox in eine initrd und debuggen ein gebrochenes Speichertreiber für das Startgerät, so früh in dem Init - Prozess , dass alles , was Sie haben , ist der erste RAM - Disk, und noch Sie noch einen Editor haben - vi.
Smcameron

2
Nach einer Weile mit vi kennen Ihre Finger die Bewegungen - aber Sie können sich nicht erinnern, was die tatsächlichen Tasten sind!
Martin Beckett

10
Ich dachte, es sei ed"immer verfügbar und läuft auf dem am meisten verkrüppelten Einzelbenutzermodus, defekten Grafiken, ohne Keymap, Slow Link-Maschine". Warten Sie, welches Jahr ist das? (Seufz - edich werde dich nie vergessen.)
Belacqua

2
@ Kendall: Das aktuelle Ubuntu-Linux enthält keine installierten Emacs.
Intuitiert

25

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


2
Dies ist auch meine Erfahrung ... Emacs oder uEmacs waren nie verfügbar. Mein erster Editor war uEmacs (auf Amiga), aber da ich vim gelernt habe, war es einfach zu bequem, um herum zu haben.
Marius

Dies ist im Grunde auch meine Erfahrung. Vi ist überall und wird normalerweise als Standard-EDITOR auf Unix-Systemen installiert. Sie müssen es also wissen, wenn Sie mit Unix arbeiten. Trotzdem benutze ich jeden Tag Emacs für die Textbearbeitung und ich liebe es.
Fergie

14

Es scheint, dass bereits eine Antwort ausgewählt wurde, aber der große Unterschied für mich war immer das Modale gegenüber dem Nicht-Modalen. Vim ist modal, was bedeutet, dass Optimierungen basierend auf einem bestimmten Satz von Nutzungsmodi vorgenommen werden. Zumindest habe ich das immer so gesehen. Dies macht die Verwendung von Vim zu einer anderen Erfahrung, da Sie anstelle eines Arbeitsbereichs, in den Sie Code eingeben, einer Umgebung wirklich anweisen, auf den Text zu reagieren. Aus diesem Grund sagen die Leute, dass Sie mit Vim wirklich eine Sprache lernen. Das: wq und: s / foo / bar ist Teil einer Shell-ähnlichen Umgebung, die Text bearbeitet und liest.

Emacs hingegen ist den meisten Editoren / Textverarbeitungsprogrammen / etc. Viel näher. Sie sehen heute. Sie haben einen Arbeitsbereich mit einer hoch programmierbaren Oberfläche. Aus diesem Grund sehen Sie Dinge wie E-Mail, IRC, Shells usw. Als Programmierer fällt es Ihnen leicht, zu sagen: "Nehmen Sie die Zeilennummer, auf der ich mich befinde, und machen Sie etwas mit den Informationen." Der Wunsch, den Editor zu verlassen, wird geringer, da Sie Emacs haben, mit dem Sie diese Dinge im Rahmen Ihres Editors erledigen können, anstatt zu beenden, eine andere App / Sprache zu öffnen und Dinge an einem Text zu tun.

Die beiden Ideen sind nicht unbedingt gegensätzlich, aber es ist einfach so, dass sie zwei unterschiedliche Schwerpunkte offenbaren. Persönlich benutze ich Emacs, aber ich habe Leute gesehen, die Vim wirklich gut kennen und ehrlich sagen können, dass es egal ist, welche Sie wählen. Ich habe zuerst Vim ausprobiert, aber Emacs hat sich für mich entschieden. Es ist wahr, dass Sie, egal für was Sie sich entscheiden, zumindest ein wenig mit Vim vertraut sein sollten, da es wirklich immer verfügbar ist.


13

Ich habe mit vi angefangen, bin zu Emacs gegangen, 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 eine Weile in Eclipse geraten, 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 erfolgt in mehr Schritten als in Emacs, IIRC. Und das Einfügen von beispielsweise einem Browser in ein Terminalfenster ist irritierend, es sei denn, Sie tun etwas Besonderes, auf das ich keine Lust habe, also ertrage ich die seltsame Einrückung. Ich denke, das Bearbeiten mehrerer Dateien in Emacs war einfacher. Springen Sie mindestens von einer Datei zur nächsten, wenn Sie beide auf dem Bildschirm haben.

Ich habe weder mit den ausgefallenen Funktionen von vi noch mit emacs gespielt, da ich mich nur gerne mit dem Codieren beschäftige. Alles, was ich brauche, sind die hübschen Farben und die richtige Konvertierung von Tabulatoren in Leerzeichen (besonders wichtig bei Python).

Ich denke, es hängt alles davon ab, ob Sie :wqoder Ctrl-x Ctrl-s(IIRC) zum Speichern einer Datei verwenden möchten, 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.


1
Dies ist immer noch nicht erledigt, aber es ist viel einfacher, als alle Einstellungen anzupassen, die Terminalpasten durcheinander bringen. Verwenden Sie :set paste, fügen Sie dann Ihren Text ein und wenn Sie fertig :set nopastesind, kehren Sie zum normalen Modus zurück. Es gibt auch den :set pastetoggle=<F2>Befehl, der dies mithilfe der von Ihnen gewählten Tastenkombination umschaltet.
hbar

Im ^R^P+Einrückungsmodus können Sie aus der Zwischenablage einfügen und den aktuellen Einzug beibehalten. ^R^O+wird Einrückung fallen lassen. ^R+fügt es ein, als hätten Sie es eingegeben. :help i_^R^PFür mehr Information.
Intuition

3
Ich kann mir nicht vorstellen, dass das Ausschneiden / Einfügen einfacher ist als yyp. Sehen Sie auch hier, um zu und von verschiedenen Fenstern zu schneiden und einzufügen stackackflow.com/a/8757876/654789
puk

@puk - Ctrl-k (yank) / Ctr-y (put) ist in Emacs genauso einfach. In Emacs haben Sie auch mehrere Register (az), in denen Sie entweder Text oder die aktuelle Position in ...
Kendall Helmstetter Gelner

3
vim hat auch mehrere Register
TamaMcGlinn

12

Im Alltag gibt es einen großen Unterschied: Vim (oder eine beliebige vi-Variante) ist von Natur aus modal (Sie wechseln in Befehlsmodi, in denen Sie nicht bearbeiten können) und Emacs (zusammen mit den meisten anderen Editoren) nicht.

Sicher, wenn Sie Menüs und dergleichen verwenden, müssen Sie in Vim zunächst nicht in den Befehlsmodus wechseln. Aber um auch nur einen winzigen Bruchteil der Kraft von Vim zu nutzen, werden Sie es tun. Das ist das Herzstück der Vim / Emacs-Debatte.

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

Ich bin jedoch neugierig, warum Sie daran denken, eines davon über eine traditionellere IDE zu lernen. Wofür möchten Sie eines davon lernen?


8
Ich möchte es nur lernen, um zu sehen, ob es seinem Hype standhält, um ehrlich zu sein. Ich habe gesehen, wie flexibel beide sind, und ich habe gesehen, wie Experten einige ziemlich verrückte Sachen in ihnen gemacht haben, und ich möchte sehen, ob es die Lernkurve wert ist. Außerdem unterstützt meine IDE Lisp nicht. :)
Sasha Chedygov

3
Hmm. Das Problem ist, dass es so viele Emacs gibt ... aber ich lasse immer noch eine IDE für die Verwendung von Emacs, eine komplexe Reihe sich wiederholender Aufgaben, die ich mithilfe der Makroaufzeichnung automatisiere. Sie können beispielsweise ein aktuelles Wort oder einen aktuellen Ausdruck verwenden, diesen in einen "Puffer" kopieren (denken Sie, nur Sie können mehr als einen ausschneiden / einfügen), dann in eine andere Datei wechseln, Text teilweise mit dem kopierten Wert und dann einen anderen zuvor eingeben Kopieren Sie auch den Wert, bewegen Sie den Cursor, speichern Sie die Position und kehren Sie wieder zum ersten Puffer zurück. Wiederholen Sie dann den Vorgang für die nächste Zeile der Originaldatei.
Kendall Helmstetter Gelner

1
Ich habe sowohl in vi als auch in Emacs häufig Makros verwendet. Was Sie vermissen, ist die Tatsache, dass Emacs über eine weitaus größere Auswahl an Methoden verfügt, auf die während der Verwendung von Makros zugegriffen werden kann, und die Tatsache, dass Sie überall Schnittpuffer verwenden können - beispielsweise auch mitten in Suchbegriffen. Bitte sagen Sie mir, wie Sie ein Makro schreiben würden, das ein Wort eines Ausdrucks basierend auf einem regulären Ausdruck auswählt, den gefundenen Begriff nimmt, ein anderes Dokument zu diesem Begriff durchsucht und dann Ersetzungen um ihn herum vornimmt.
Kendall Helmstetter Gelner

2
@ kendall-helmstetter-gelner - das ist mit vimscript möglich, oder die sprachen, für die vim bindungen hat (wie ruby ​​/ vim / tcl / perl). Sie haben Zugriff auf alle Funktionen und Editorpuffer von vim aus den Skriptsprachen.
segy

1
Das ist beeindruckend, aber um dasselbe in Emacs zu tun, müssen nur die mir bereits bekannten Tastenanschläge verwendet werden, um ein komplexes Makro zu erstellen, anstatt es von Hand ausschreiben zu müssen. Es ist für jeden, der Emacs kennt, einfach, ein Makro zu erstellen, das diese Aufgabe erfüllt, aber ich würde sagen, dass es nicht viele VI-Benutzer gibt, die das von Ihnen erstellte Makro ohne einiges an Recherche erstellen könnten.
Kendall Helmstetter Gelner

11

Es wurde viel über beide Editoren gesagt, aber ich muss nur meine 5 Pence hinzufügen. Beide Editoren sind wunderbar und Sie können mit keinem von beiden etwas falsch machen.

Ich bin seit ungefähr 15 Jahren ein vi / vim-Benutzer. Ich habe mehrmals versucht, in Emacs zu konvertieren, 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, dass vim Sie dazu bringt, die Umgebung / das Betriebssystem zu verwenden, während emacs versucht, sie zu kapseln oder zu ersetzen. Sie können beispielsweise ein Datum in Ihren Text einfügen, indem Sie: r! Date in vim oder einen Kalender mit: r! Cal 1 2014 verwenden oder sogar den Inhalt Ihres Puffers durch die hexadezimale Version des Inhalts ersetzen. Z.B. :%! xxd, bearbeite hex und kehre dann zurück mit:%! xxd -r und vielen anderen Verwendungszwecken, wie eingebautem grep, sed usw.

Ein weiteres Beispiel ist die Verwendung mit jqund gron. Z.B. Fügen Sie den json-Blob in den Editor ein und führen Sie ihn zur Transformation aus:

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

ODER

:%!jq .path.to.stuff

Jeder der oben genannten Piping-Befehle kann separat über ausgeführt werden :%!<command>, %dh alle Dokumente, kann aber auch bei Auswahl, ausgewählten Zeilen usw. ausgeführt werden. Hier outputkann gron als jqPfad verwendet werden.

Sie erhalten auch die EX-Stapelbearbeitungsfunktion, z. Ersetzen Sie bestimmte Wörter, formatieren Sie den Code neu, konvertieren Sie Dos-> Unix-Zeilenumbrüche und führen Sie ein Makro für jeweils 100 Dateien aus. Mit ex ist das ganz einfach. Ich bin mir nicht sicher, ob Emacs etwas Ähnliches hat.

Mit anderen Worten, IMHO vim kommt der Unix-Philosophie näher. 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.

Abgesehen davon, dass vi auf jedem Unix- / Linux-System ein Defacto-Standard 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.


8
"Vim kommt der Unix-Philosophie näher." - Sie sprechen hier von der Philosophie bezüglich der Werkzeuge, die in Ihrer Shell verfügbar sind. Die Shell selbst ist jedoch eine große Ansammlung von integrierten Funktionen, Verlauf, Globbing, Prozesssteuerung, Programmierbarkeit usw. Emacs liegt eindeutig näher an der Philosophie der Unix-Shells: Bieten Sie eine hochgradig anpassbare Umgebung, in der Tools zusammen verwendet werden können, und machen Sie es dem Benutzer einfach, die Tools mit ihren eigenen Codefragmenten zu erweitern, während sie arbeiten. Ich denke, wir können sehen, dass sowohl Emacs als auch Vim stark in der Unix-Tradition verwurzelt sind.
Matt

1
Vielen Dank für Ihren Kommentar. Es war keineswegs meine Absicht, hier einen Editor-Krieg zu beginnen, noch war es, Emacs- Benutzer zu beleidigen . Ich finde es einfach einfacher und portabler, die eigentlichen Befehle von der Shell (oder vom Editor aus) aufzurufen, als komplexe Erweiterungen zu schreiben, um die Funktionalität in den Emacs zu kapseln , was dazu führt, dass die Umgebung im Laufe der Zeit aufgebläht wird. Diese Erweiterungen hängen jedoch von den Benutzerpräferenzen ab und können durchgeführt werden, werden jedoch von keinem der Editoren erzwungen. Stimmen Sie also dem Emacs und dem vi (m) Platz in der UNIX-Tradition zu.
Alex

1
Um den Nichtkrieg fortzusetzen, hoffe ich, dass klar war, dass ich Ihrer Analogie "vim ist eher wie ein Unix-Tool" nicht widersprach. Mir ist einfach eingefallen, dass diese Intuition mit "und Emacs ist eher wie eine Unix-Shell" erweitert werden könnte. :-)
Matt

@ Matt: Ich mag die Analogie. Und so ist es. ;)
Alex

2
Sie können alles, was Sie erwähnen, und vieles mehr in Emacs tun (im Hexl-Modus können Sie beispielsweise die Datei in Hex mit einer ASCII-Vorschau zur Seite bearbeiten). Ich kenne VI auch ziemlich gut, aber das Erstellen von Makros ist in Emacs viel einfacher und flexibler und kann einfach weit mehr als selbst die meisten modernen VIM-Implementierungen. Das ist der Grund, es zu wissen, denn Emacs ist an den meisten Orten vorhanden und kann einen echten Textbearbeitungsschub bieten.
Kendall Helmstetter Gelner

10

Für mich sind Profis von Emacs,

  • 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), damit ich weiter codieren kann, ohne zwischen Anwendungen zu wechseln.
  • Erweiterbarkeit alles, was Sie nicht mögen, können Sie mit lisp ändern.

11
FWIW: vim hat so ziemlich die ersten 3 (allerdings mit unterschiedlichen Namen. "Tramp-mode" ist in vim "netrw"). # 4 wird im Allgemeinen als Fehler angesehen, nicht als Funktion von vim-Benutzern. # 5 ist in vim wahr, wenn Sie "elisp" (den schlechtesten lisp-Dialekt aller Zeiten, sagen mir meine Emacs-liebenden Freunde) durch python / mzscheme / perl / ruby ​​/ tcl / vimscript ersetzen.
Laurence Gonsalves

3
Kannst du kommentieren, warum # 4 ein Fehler ist?
Hamza Yerlikaya

2
Schauen Sie sich das Conque- Addon für eine eingebettete Shell in vim an.
Intuitiert

9

Für mich hat emacs bessere Entwicklungstools (nicht nur Tags-basierte Tools).


9

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, neigen dazu, sie für verschiedene Dinge zu verwenden, und finden es 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 eignet sich für erweiterte Bearbeitungssitzungen, in denen Sie während der Sitzung komplexe Aufgaben erledigen, mehrere Dateien ändern und Ergebnisse aus anderen Programmen verwenden müssen. Für Programmierer, die X auf ihrer Konsole verwenden (was für moderne Unixe typisch ist), ist es normal, Emacs kurz nach der Anmeldezeit in einem großen Fenster zu starten und für immer laufen zu lassen, möglicherweise Dutzende von Dateien zu besuchen und sogar Programme in mehreren Emacs-Unterfenstern auszuführen.

Was ich hier wirklich hervorheben möchte, ist: « Viele Menschen finden es wertvoll, beide zu kennen


Dies ist wahrscheinlich veraltet. Ich denke, in jenen Tagen hat Emacs 'eingebaute Fähigkeit, Browser, SSH, Musik-Player und langsame Systeme zu haben, die andere Apps nicht mehr starten, den Eindruck erweckt, dass es besser ist, eine App zu öffnen und dabei zu bleiben?
Nishant

Tolle Neuigkeiten sind: Es ist nicht veraltet! Sie können Browser, Music Player usw. außerhalb von Emacs verwenden, aber was Emacs wirklich bringt, ist die gleiche gute Schnittstelle zu all diesen Funktionen und die eine Möglichkeit (Elisp), sie zu erweitern.
Andriy Tykhonov

Meiner Meinung nach ist die Sichtweise von TAUP auf Emacs veraltet, da Emacs damals ein Vorteil war, da es sich um eine einzelne App handelte, die mehrere Dinge gleichzeitig ausführen konnte - wie IRC, Musik, Remote-Bearbeitung usw. Heute verfügen Sie jedoch über hervorragende Anwendungen für jeden dieser Zwecke, und der Speicher ist nach wie vor kein Problem mehr ... Stellen Sie sich vor, Sie lesen Google Mail in Emacs - ich meine, in der Google Mail-Oberfläche sind wirklich großartige Tastenkombinationen integriert, die Sie an einen Emacs-E-Mail-Client anpassen können Nehmen Sie sich viel Zeit und sind Sie möglicherweise nicht so gut wie die ursprüngliche Google Mail-Oberfläche usw.
Nishant

Es ist nicht veraltet! :)
Andriy Tykhonov

> Heute haben Sie jedoch ausgezeichnete Anwendungen für jeden dieser Zwecke. Ja, aber Sie haben all diese Anwendungen mit sehr unterschiedlichen Schnittstellen, Konfigurationen, Benutzererfahrungen usw. usw. usw. Aber Emacs ist das einzige Werkzeug! Zum Beispiel mag ich Emacs-Tastenkombinationen sehr, ich verwende sie in der Shell im Browser. Und es ist sehr gut, dass zumindest einige Dinge in Anwendungen gleich sind ...
Andriy Tykhonov

9

Vorteile von Emacs

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

  • Eines der am meisten 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, die verschiedenen BSDs, Solaris, AIX, IRIX, macOSetc.), MS-DOS, Microsoft Windows, AmigaOS, und OpenVMS. Sowohl kostenlose als auch proprietäre Unix-Systeme bieten häufig Emacs, die mit dem Betriebssystem gebündelt sind.

  • Mit der Emacs-Serverarchitektur können mehrere Clients eine Verbindung zu derselben Emacs-Instanz herstellen und die Pufferliste, den Kill Ring, den Rückgängig-Verlauf und einen anderen Status gemeinsam nutzen.

  • Durchdringendes Online-Hilfesystem mit Tastenkombinationen, Funktionen und Befehlen, die im Handumdrehen dokumentiert werden.

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

  • Ein leistungsstarker 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 DWIM (Do What I Mean) ausgeführt werden, indem programmgesteuert auf frühere Aktionen und den Dokumentstatus reagiert wird. Beispielsweise kann ein Befehl zum Wechseln oder Teilen von Fenstern zu einem anderen Fenster wechseln, falls eines vorhanden ist, oder bei Bedarf eines erstellen. Dies reduziert die Anzahl der Tastenanschläge und Befehle, an die sich ein Benutzer erinnern muss.

  • "Ein Betriebssystem in einem Betriebssystem". Mit Emacs Lisp können Emacs weit über die Bearbeitungsfunktionen hinaus programmiert werden. Selbst eine Basisinstallation enthält mehrere Dutzend Anwendungen, darunter zwei Webbrowser, Nachrichtenleser, mehrere Mail-Agenten, 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. Ebenfalls erhältlich sind zahlreiche Programmierpakete, darunter einige für bestimmte Sprach- / Bibliothekskombinationen oder Codierungsstile.

Vorteile von vi-ähnlichen Editoren

  • Bearbeitungsbefehle sind zusammensetzbar
  • Vi hat eine modale Schnittstelle (die Emacs emulieren kann)
  • In der Vergangenheit wird vi schneller geladen als Emacs.
  • Obwohl es eng mit der UNIX-Tradition 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 über 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 solche mit Busybox) und andere eingeschränkte Umgebungen enthalten häufig vi, jedoch keine Emacs.

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


7

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.

Siehe Screenshot unten,


(Quelle: spacemacs.org )


3
Das ist Betrug ... Es ist Emacs mit einigen funky Configs;) Ziemlich viele Configs tatsächlich
Alex

2
Das ist toll - wenn es funktioniert. Wenn dies nicht der Fall ist - wenn Sie Elisp und Emacs noch nicht kennen oder die Hauptverantwortlichen im Gitter-Chat nicht finden können - stecken Sie normalerweise fest und haben kein Glück. (Manchmal kann das Löschen Ihres Melpa-Verzeichnisses in .emacs jedoch Abhilfe schaffen ...)
Aaron Hall

1
Obwohl es viel mehr Zeug hat, als ich brauche, bin ich mit Spacemacs wirklich zufrieden. Ich habe meine Punktedateien auf Github, damit ich neue Maschinen einfach / schnell einrichten kann, und da ich böse (vim-Tastenkombinationen) verwende, habe ich genug Fähigkeiten, um zurechtzukommen, wenn ich an Maschinen arbeiten muss, auf denen ich meine Spacemacs-Konfiguration nicht installieren kann.
anr78

6

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


1
Ich habe Vim zum Bearbeiten und Xcode zum Debuggen verwendet, es ist weniger als ideal, aber machbar.
StackedCrooked

4

Es ist wie Äpfel und Orangen. Beide haben ein unterschiedliches Design und eine unterschiedliche Philosophie. Vim ist ein Texteditor, während Emacs ein Lisp-Interpreter ist, der Text bearbeitet.

Ich benutze Vim, weil es schnell, locker und wirklich gut darin ist, Texte zu manipulieren. 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 Textmanipulation.

Das Erweitern von Vim mit bash / zsh und tmux ist normalerweise einfach und ermöglicht es Ihnen, viele 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 natürlich nicht integrieren lässt, es sei denn, Sie sagen, wie es geht. Eine andere lohnende Erweiterung, die ich benutze, ist Tig. Es ist ein ncurses-basiertes Git-Frontend. Ich habe nur eine Bindung, die Tig lautlos ö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 Würdigkeit. Schließlich braucht ein guter Programmierer nichts weiter als 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 von diesen beiden Softwareprogrammen, denn es gibt viel zu lernen und zu entdecken!



3

Emacs ist wirklich eher ein Do- All- 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 zu bewegen, und im Befehlsmodus weiterhin die falschen Dinge eingeben muss. Wenn Sie dieses Problem nicht haben, ist vi (m) möglicherweise der Editor für Sie.


2

Eine gelbsüchtige Sichtweise:

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

Sogar Microsquish muss vi unterstützen (obwohl sie es gut verstecken), weil die Regierung und die Unternehmen die veröffentlichten Standards einhalten.

Meiner Meinung nach ist es ein Handicap, viel über einen ausgefallenen Redakteur zu wissen, wenn Sie in einer geschäftigen Umgebung einen praktischen Job haben - nicht in einer Treibhausblume, die auf ein schickes Rig in einer Entwicklungsumgebung oder im akademischen Bereich beschränkt ist. Lernen Sie nicht alle ausgefallenen Tricks in Vim oder Emacs und entwickeln Sie keine Makros, damit sich die Bearbeitungsumgebung Ihrem Willen anpasst. Es ist eine enorme Zeitersparnis, 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 das Papier von Bill Joy - es ist eine sehr kompetente, vielleicht sogar schöne technische Übung, um einfachen Text sehr, sehr schnell zu bearbeiten. Hier gilt die Parito-Regel: 80% der Früchte befinden sich in 20% der Körbe. Das schnelle Bearbeiten von einfachem Text ist der Kern der Bearbeitungskompetenz - alles andere ist optional - und manchmal verletzend.


3
Über welches Papier sprichst du? Können Sie wenigstens einen Namen nennen, wenn nicht einen Link?
Darkfeline

2
"Auch MS muss vi unterstützen." Können Sie das unterstützen?
Dodgethesteamroller

1

Wenn Sie sich viel von Standort zu Standort bewegen oder sich bei Produktionssystemen anmelden müssen, ist vim der richtige Weg.

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

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

Wenn Sie vi nicht gut kennen, sind Sie schwer behindert, wenn Sie sich in eine Unix-Box mit einer Standardkonfiguration einloggen.

Allein aus diesem Grund würde ich vim als Ihren normalen Alltagseditor empfehlen. Ich habe gesehen, wie Emacs-Fans versucht haben, Konfigurationsdateien auf einem Bare-Bones-Unix-Server zu ändern.


1
Versuchen set -o viSie für Bash, in Ihrem .bashrcanstelle von zu verwenden set -o emacs, was standardmäßig verwendet wird. Ich habe ksh nie benutzt, aber es könnte dasselbe sein.
Sjas

1

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 Emacs-Integration mit LISP ist wunderbar! Sie sollten SLIME verwenden. Sie haben dann eine wunderbare Integration in die REPL und können evalFunktionen, Puffer oder Dateien direkt in einen laufenden Interpreter in einem Emacs-Puffer und vieles mehr ...


1
Ja, das ist mir bewusst, aber die Suche nach einem anständigen Lisp-Editor war nicht mein Grund, diese Frage zu stellen - es war nur ein Beispiel. Vielen Dank für die Antwort!
Sasha Chedygov

1

Ich arbeite seit ungefähr 2 Jahren mit Spacemacs und seit ungefähr einem Jahr mit Neovim in einer Produktions- / Forschungsumgebung. Spacemacs ist Emacs mit ein paar netten zusätzlichen Funktionen wie Ebenen usw. Und Neovim ist wieder eine Gabel 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 Textbearbeitungsbedürfnisse.

Hier ist ein einfacher Vergleich:

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

  • Neovim / vim ist etwas schneller als Emacs, deutlich 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.

  • Beide können je nach verwendetem Paket fehlerhaft sein. Spacemacs neigen dazu, einzufrieren, und Neovim neigen dazu, beängstigende Fehlermeldungen anzuzeigen. Wählen Sie also Ihr Gift dort aus.

  • Die modale Bearbeitung in vim ist kein intuitives Konzept, aber wenn Sie sich erst einmal daran gewöhnt haben, möchten Sie es trotzdem. Beide Herausgeber bieten das an.


1
"Modale Bearbeitung (...), sobald Sie sich daran gewöhnt haben, wollen Sie es überall" - das ist interessant. Ich habe Jahre damit verbracht, Emacs im bösen Modus zu verwenden, und war an die modale Bearbeitung gewöhnt. Jetzt bin ich wieder auf nicht-modale Weise zurückgegangen ... Es fühlt sich einfach besser an. Ich denke, das hängt nicht nur von der Person ab, sondern auch vom Kontext / der Zeit im Leben / was auch immer. Geschmack, nehme ich an. :)
Jay

1
@ Jay, denke ich, aber verpassen Sie nicht Dinge wie Spaltenauswahl und Herumspringen mit ": XX"?
Kaan E.

Nicht wirklich ... Ich verwende manchmal die Rechteckauswahl von Emacs und anstelle von: xx mache ich "Mg g XX" - ein paar weitere Tastenanschläge, aber ich muss selten direkt zu einer Linie gehen. Normalerweise sendet mich eine Emacs-Anwendung (Debugger usw.) in die richtige Zeile.
Jay

0

Die Ausführung von Tastenanschlägen ::: vi-Bearbeitung behält jede Permutation eingegebener Schlüssel bei. Dadurch wird im Entscheidungsbaum ein Pfad erstellt, der jeden Befehl eindeutig identifiziert, während Emacs-Befehle eine Kombination von sofort ausgeführten typisierten Schlüsseln sind, sodass 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 sich im Wesentlichen um eine Ausführungsumgebung für ein Lisp-Programm handelt, das für die Textbearbeitung entwickelt wurde.


0

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

emacs ist ein "Betriebssystem", das vorgibt, ein Editor zu sein. Sie können evalCode verwenden, um sein Verhalten zu ändern und es nach Belieben zu erweitern. Das modeEmpfangen / Senden von E-Mails auf Emacs ist wie eine E-Mail-Software auf dem Betriebssystem.

Wenn ich einfach bearbeite, zum Beispiel eine Konfigurationsdatei ändere, verwende ich vim .

Ansonsten verlasse ich nie Emacs .


0

Ich denke, der Hauptunterschied ist das Designziel. VIM ist für UNIX als funktionierender Editor. Emacs ist für GNU- und Lisp-Hacker, hat also ein gemischtes Designelement.

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


0

Ich bin ein Emacs-Fan, ermutige aber 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 mehrere Kommentare zu VIM bemerkt, die schneller als Emacs starten. Wenn Ihnen das wirklich wichtig ist, führen Sie Emacs im Servermodus aus und führen Sie den Alias ​​'emacs' zu 'emacsclient'. Der Client ist superschnell, da er nur auf den Server auf der Schulter tippt und ihm mitteilt, welche Datei Sie bearbeiten möchten. Unter MacOSX beträgt der Emacsclient nur 33 KB, während der Emacs 287 MB beträgt.

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

Die meisten Beschwerden, die ich über Emacs höre, scheinen von Leuten zu kommen, die über Emacs falsch informiert sind. Nachdem ich seit 1982 sowohl vi als auch emacs verwendet habe, erinnere ich mich definitiv an eine Zeit, in der emacs viel langsamer als vi geladen wurden und den größten Teil des physischen Speichers in meinen frühen UNIX-Boxen verwendeten, aber das ist nicht mehr der Fall und seit mindestens 15 Jahren nicht mehr. 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 Finger etwas weh, wenn er wiederholt auf die Steuertaste für Emacs-Aufnahmen zugreift. 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 Taste "fn" zu schaffen. Es ist bei weitem nicht so ärgerlich, wenn Control die Taste unten links ist.


Sie können auch Emacs "sichern", was im Grunde bedeutet, einen Schnappschuss der kompilierten Elisp-Erweiterungen zu erstellen, die Sie wünschen. Emacs startet auf diese Weise viel schneller, aber es dauert einige Zeit, um festzustellen, welche Erweiterungen Sie einschließen möchten.
Phil Harbison

Außerdem kannst du "Towers Of Hanoi" in Emacs spielen. Wie cool ist das? :)
Phil Harbison

Betreff: "emacs pinkie". Bei einigen älteren Tastaturen, z. B. Sun Type 3/4, auf denen der HHKB Professional basiert, befindet sich die Steuerung dort, wo sich normalerweise die Feststelltaste befindet. Ich habe nicht die Emacs-Erfahrung, die Sie haben, aber ich habe mich sehr schnell daran gewöhnt, Control in der ersten Reihe zu haben. So sehr, dass ich diese Änderung auf allen meinen Tastaturen vorgenommen habe (auch auf dem MacBook Pro). Die HHKB hat einige weitere Verbesserungen, z. B. Rücktaste direkt über Enter und Esc neben 1.
Martinweiss

@PhilHarbison könnte auf "Dump" näher eingehen?
A_P

0

Ich war zuerst Benutzer von vim, dann wechselte ich zu Emacs, dann zu Vim, jetzt experimentiere ich wieder mit Emacs.

  • Beide sind großartige Redakteure.
  • Beide sind heute sehr erweiterbar
  • Beide haben tolle Plugins und Community

Als Entwickler tippen wir viel, und für mich ist das Bewegen in Puffern und Dateien die größte sich wiederholende Aufgabe. Deshalb möchte ich einen Editor, in dem ich mich schnell bewegen kann!

Die Motivation, wieder mit Emacs zu experimentieren, ist, dass ich es fallen ließ. Strg führte Tastenkombinationen schneller als vim und einfacher zu überlegen.

In vim haben Sie Modi, Sie haben Einfügemodus, visuellen Modus, normalen Modus, was passiert, wenn Sie etwas drücken, hängt von dem Modus ab, in dem Sie sich befinden, ist ein zustandsbehafteter Ansatz für die Bearbeitung. Sie bewegen sich, wechseln in den Einfügemodus, bearbeiten, verlassen den Einfügemodus und bewegen sich erneut. Ich verliere mich häufig, wenn ich eine ESC-Presse oder ähnliches vermisse.

In Emacs gibt es keinen Modus. Im Grunde drücken Sie die Strg-Taste mit Ihrem Rosa und geben den Tastenanschlag ein, z. B. Cx Cf, Cx Cs, Cx Cc. Es gibt Tastenkombinationen, bei denen Sie die Strg-Taste loslassen müssen. Ich hasse diese und ersetze sie immer durch Tasten mit gedrückter Steuerung.

Ich denke, dass Emacs Ansatz schneller zu denken und zu tippen ist, aber vim hat eine andere Stärke: Die Befehle sind zusammensetzbar und haben normalerweise ein Format. Um beispielsweise eine Zeile ddzu löschen, können Sie ein Wort löschen dw. Plugins nutzen diesen Fall. Mit dem Vim-Surround-Plugin können Sie Anführungszeichen mit ds "(delete Surround") löschen und bis zum nächsten / löschen dt/. Löschen Sie bis zum vorherigen /: dT/und so weiter. Solange Sie lernen, werden die bewegenden Dinge sehr interessant.

Zusammenfassend habe ich heute festgestellt, dass Emacs-Tastenkombinationen für die Makrobearbeitung schneller sind und VIM-Befehle für die Mikrobearbeitung leistungsfähiger sind

Ich benutze vim seit fünf Jahren, also bearbeite ich das Denken hauptsächlich über Wörter, Linien, Umgebungen, Blöcke usw. Lösche diese Zeile, entferne Anführungszeichen, ersetze Anführungszeichen, lösche Wörter im Cursor, ich versuche, die Emacs herauszufinden bewegt sich dafür

Als letztes Zitat würde ich sagen, dass mir fzf mehr am Herzen liegt als Emacs oder vim. Ich würde gerne einen Editor haben, der vollständig auf fzf basiert


-9

Erstens wird Vi (ursprüngliche Realisierung) heute nicht verwendet. Das, was Sie sagen, ist eine Vim-Ableitung.

Um die Vim-Funktionalität zu erweitern, müssen Sie Vim neu kompilieren, Emacs nicht.

Emacs hat Vim in sich (Viper-Modus).

Emacs müssen normalerweise manuell installiert werden. Vim ist normalerweise auf allen Unix-Betriebssystemen vorinstalliert (aber wenn Sie SSH-Zugriff auf den Host-Tramp-Modus haben, gewinnen Sie Vim :).

Wenn Sie Vim ausprobieren, hassen Sie Emacs. Beginnen Sie also zuerst mit Emacs.

Lesen Sie auch http://www.dina.dk/~abraham/religion/vi-tutorial.html (Link runter, also benutze diesen )

Antwortsuche in hxxp: //en.wikipedia.org/wiki/Editor_war


8
Sie müssen vim nicht neu kompilieren, um es zu erweitern. Sie müssen vim nicht einmal beenden.
zu viel PHP

1
Haben vimscript / Python / Ruby / etc Zugriff auf alle internen Vim-Strukturen? Wenn die Codebasis des Editors dazu beiträgt, die Erweiterung oder Komplexität der Erweiterung auf einer Komplexitätsebene von EDITOR zu verbessern?
Gavenkoa

1
Viele Vim-Skripte mögen intellektuelle MACROS. Um Vim zu erweitern, benötigen Sie Plugins ((
Gavenkoa

1
Vi wird nicht verwendet?!?! Was? Wird nvi als original angesehen? Oder ein "traditionelles vi"? Viele Systeme wie FreeBSD, ArchLinix bündeln das traditionelle vi oder nvi und ich bin dafür dankbar. Einige Systeme wie Debian gehen mit vim, das standardmäßig im kompatiblen Modus ist (fühlt sich fast wie traditionelles vi an)
Alex

1
@gavenkoa, ich stimme Alex absolut zu, Sie haben offensichtlich noch nie ein System ausprobiert, das eine manuelle Installation erfordert, wie Gentoo, einige BSDs oder Arch Linux. Außerdem: «Wenn Sie Vim ausprobieren, hassen Sie Emacs. Beginnen Sie also zuerst mit Emacs.» Ich würde zuerst VIM ausprobieren, und Sie auch, wenn Sie ein wenig nachdenken. Das erinnert mich an Leute, die sagen, sie sollten nicht zuerst die funktionale Programmierung ausprobieren. Ich bin traurig, dass ich es nicht früher versucht habe ...
JMCF125
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.