Vim vs Emacs



  • Ich würde auch nicht auf die Idee kommen, größere Projekte mit Vim zu entwickeln. Trotzdem ist es ein mächtiger schneller Editor, den ich immer nutze, wenn ich mir eine Datei anschauen oder schnell bearbeiten will.

    Und was die reine Textbearbeitung angeht, da kann er schon sehr viele und da könnnen IDEs nicht unbedingt mithalten. Kann schon sein, dass irgendwo in den Untiefen der Menüs irgendwas versteckt ist, womit man was ähnliches erreichen könnte, aber bei vim gehört es einfach dazu und da kann man viel mit dem Text anstellen. Ich vermisse es zwar nicht, wenn ich unter Windows mit VS oder Notepad++ arbeite, aber umgekehrt würde ich unter Linux auch nicht auf vim verzichten wollen.

    Ein großer Kritikpunkt ist, dass man bei Vim genau so sehr lange braucht um das Editieren zu lernen. Und zwar nicht nur die ersten Gehversuche sondern das Erreichen der angepriesenen Effizienz. Und zwar weil die Werkzeuge, die einen schneller machen, zwar vorhanden sind, man sie aber nur schwer autonom findet. Man ist eben auf die, auch im Video erwähnten, Kollegen und Mailinglisten angewiesen, über die die Information langsam diffundiert. Bei den IDEs wird deutlich mehr auf leichteres Lernen gesetzt. Unter anderem durch solch plumpe aber durchaus wirkungsvolle Elemente wie Tipps-des-Tages oder animierte Büroklammern. Bei Vim und emacs hat man zwar die eingebauten Hilfen, aber richtig effizient suchen kann man zunächst einmal nicht, da man nicht einmal weiß dass dem eigenen Reprtoire Funktionalität fehlt.

    Das ist umso mehr verwunderlich, wenn mir z.B. jahrelange Vim-User (und fast schon Fanatiker, die viel Zeit mit ihrer Editoroptimierung verbringen), die zudem ausreichend kompetent sind, versichern dass sie immer noch nicht ausgelernt haben. Wenn ich das mit z.B. IDE-Nutzern vergleiche, die die 10 am meisten Zeitsparenden Features draufhaben (meistens schnelles Auffinden von Dokumentation, Navigation im Code, Refactoring, VCS-Gimmicks) spätestens nach ein paar Monaten flüssig arbeiten können.

    Und es ist keine Entschuldigung für Vim dass es in einigen Bereichen vielseitiger als eine IDE ist; das Erlernen der Bedienung ist ebenfalls ein relevantes Feature, bei dem Vim und Emacs schlecht abschneiden. [1]

    Sublime sieht auf den ersten Blick so aus, als würde es diese Dinge besser machen; ich denke ich sollte es mir anschauen.

    Mechanics schrieb:

    Ja und? Das ist doch überhaupt nicht der Punkt. Es ist doch erstmal echt cool, wenn man überhaupt sowas wie Code Completion in vim hinbekommt, da erwartet doch keiner, dass sie so gut und bequem funktioniert wie in VS oder Netbeans 😉

    Ohne das ";)" hätte ich an diesem Abschnitt nicht wenig Anstoß genommen.

    Disclaimer: This post has been composed using the emacs text editor.

    -------------------------------------------------------------------------------

    [1] Vermutlich liegt auch daran die starke Bindung an den eigenen Editor: Was man mühsam erarbeitet hat, möchte man nicht so schnell als wertlos dargestellt sehen.



  • Sprachl Oser schrieb:

    Ein großer Kritikpunkt ist, dass man bei Vim genau so sehr lange braucht um das Editieren zu lernen.

    Ja... Ich hab auch Jahre gebraucht, bis ich vim effizient nutzen konnte, selbst Jahre, bis ich überhaupt Gefallen daran gefunden habe. Hab aber auch früh genug angefangen und damals war noch nicht relevant für mich, später schon, und dann konnte ich schon gut damit umgehen.
    Aber muss man das unbedingt als einen Kritikpunkt sehen? Ich muss ehrlich sagen, ich find das eher positiv. Wir reden hier ja nicht darüber, dass jeder Vim oder Emacs nutzen sollte und das irgendwann in naher Zukunft die großen IDEs als Mainstream Editoren ablöst. Es geht um etwas sehr subjektives. Und ich finde es gut, dass es immer noch solche Bereiche gibt, wo man immer noch sehr lange braucht, um überhaupt reinzukommen, die eben einem eingeschränkten Nutzerkreis vorbehalten bleiben und wo nicht jeder Möchtergern-Web-Scriptkiddie sofort durchsteigt und nach 2 Stunden effizient arbeiten kann.



  • Mechanics schrieb:

    Und ich finde es gut, dass es immer noch solche Bereiche gibt, wo man immer noch sehr lange braucht, um überhaupt reinzukommen, die eben einem eingeschränkten Nutzerkreis vorbehalten bleiben und wo nicht jeder Möchtergern-Web-Scriptkiddie sofort durchsteigt und nach 2 Stunden effizient arbeiten kann.

    Achja? Gibt dir das ein mächtiges Gefühl? Gehörst du dann zu einer selbsternannten Elite?
    Ich halte es für ausgesprochen dumm, Dinge zu entwickeln, die recht kompliziert in der Handhabung sind und es unterlässt sie einfacher zu machen, damit das elitäre Ambiente nicht gestört wird.
    Ich spreche mich nicht gegen vim aus, was ich auch gerne zum Editieren von Config-Files benutze. vim und emacs waren zu ihrer Zeit als es keine GUIs gab, modern. Kritisieren tu ich nur diese elitäre Geisteshaltung, in dem man recht triviale Dinge verkomplizieren möchte, um auf Andere, die ihre Zeit noch wertschätzen, herabschauen zu können.
    Ziemlich armselig sind die, die so etwas nötig haben...

    Das erinnert mich an den Adel, der dem "einfachen" Bürger gewisse Grundrecht vorenthalten wollte.
    Wenn ich schon lese, wie du anderen Nutzern effizientes Arbeiten vorenthalten möchtest, dann kann ich dich nicht anders als menschenverachtende Persönlichkeit betrachten. Aber frickel du nur mit deinem vim weiter. "Einfachere" Menschen werden mit Tools wie sublime mehr in weniger Zeit erreichen...

    L. G.
    Steffo



  • Steffo schrieb:

    Achja? Gibt dir das ein mächtiges Gefühl? Gehörst du dann zu einer selbsternannten Elite?

    Mag sein. Spricht was dagegen? Man muss es nicht so negativ sehen/ausdrücken wie du. Es ist irgenwo dasselbe wie "früher war alles besser". Ich hab doch nur angefangen, mich für Computer zu interessieren, weil es geheimnisvoll, spannend, nicht trivial war, weil ich wissen wollte, wie Hacken funktioniert, weil ich weiter gehen wollte, als meine Freunde/Mitschüler. Mittlerweile ist der ganze Flair für mich eh schon lang verloren gegangen. Und bei den ganzen Neuentwicklungen, wo alles webbasiert, touchscreenbasiert oder kachelbasiert sein muss, fühl ich mich bei den ganzen kryptischen Unixsystemen einfach heimischer. Und es ist mir völlig egal, ob jeder Scriptkiddie auf Anhieb damit zurechtkommt. Das hat nichts damit zu tun, irgendwas zu verkomplizieren. Sollen doch die anderen ihre Webbasierten Editoren oder IDEs benutzen und effizient damit arbeiten, mir ist es völlig egal, ich bin einfach froh, dass es auch noch was gibt, das noch nicht jeglichen Charme verloren hat.


  • Mod

    Das erinnert mich jetzt auch an was...bin letztens ganz zufällig über diese Seite hier gestolpert...
    http://computermuseum.informatik.uni-stuttgart.de/dev/lgp30/lgp30_8.html



  • was ist besser? schrieb:

    vim oder emacs?

    Man könnte auch fragen ob die Dampflokomotive BR 24 DB oder die Tender-Dampflokomotive Serie 130TB besser ist.



  • Mechanics schrieb:

    Ja... Ich hab auch Jahre gebraucht, bis ich vim effizient nutzen konnte

    Was hat vim eigentlich für super features, dass man die jahrelang lernen kann? Ich meine es geht doch nur um Text editieren oder? Was kann man da viel machen? Text tippen, markieren, copy&paste, suchen/ersetzen und sonst?



  • Ich nutze neben deinen erwähnten Punkten noch dies oft, aber das kann auch jede IDE

    - Zeile kopieren, ausschneiden ohne über Markieren per Cusortasten und Ctrl+C, Ctrl+X zu gehen
    - Zeile löschen ohne auswählen
    - Scrollen ohne den Cursor bewegen zu müssen
    - Ans Ende oder Anfang einer Zeile springen
    - Wortweise navigieren, editieren und löschen
    - Klassenassistent(Erstellen von .h .cpp mit automatischen Dateinamen, Includguard, Namespace etc.)
    - Aus allen Prototypen oder ausgewählten automatisch den Implementierungsrumpf in der .cpp erstelen
    - mit ein und derselben Taste mal schnell zwischen Header zu Source und zurück wechseln
    - mit ein und derselben Tasten mal eine Zeile oder Block auskommentieren oder die wieder entfernen.
    - Zur Deklaration oder Definition oder auch Aufruf navigieren
    - Virtuelle Ordner erstellen, damit es nicht zu Namensgleicheit bei den Objektdateien kommt, aber man trotzdem Ordnung beim Entwickeln hat
    - Versionverwaltung per Git, SVN etc.
    - Refaktor
    - IntelliSense
    - Doxgen Kommentare automatisiert
    - Snippets
    - Debuggen(Einzelschritt, Watches etc.)

    Das alles ist in kostenlosen IDEs Out-of-the-Box möglich. Ich denke die kommerziellen haben da noch weit mehr drauf. Das genannte mache ich mit Codelite und bin bis jetzt zufrieden damit.



  • Sind das jetzt Sachen die vim kann? Ich dachte vim ist nur ein Editor.



  • normaltipper schrieb:

    Sind das jetzt Sachen die vim kann? Ich dachte vim ist nur ein Editor.

    Es gibt Erweiterungen für vim.



  • Also ist vim dann auch schon eine IDE?



  • normaltipper schrieb:

    Mechanics schrieb:

    Ja... Ich hab auch Jahre gebraucht, bis ich vim effizient nutzen konnte

    Was hat vim eigentlich für super features, dass man die jahrelang lernen kann? Ich meine es geht doch nur um Text editieren oder? Was kann man da viel machen? Text tippen, markieren, copy&paste, suchen/ersetzen und sonst?

    Es kann vor allem
    - Konfigurierbar sein: Wenn du möchtest, dass in bestimmten Situationen X passiert und nicht Y, dann kannst du das im Prinzip einrichten.
    - Text editieren: Wie kopierst du Zeilen*, bearbeitest rechteckige Gebiete, wiederholst Aktionen, springst an bestimmte Stellen im Text, löschst ein Wort/einen Absatz/eine Zeile oder löschst bis-zu-einem-bestimmten-Zeichen vorwärts oder rückwärts, suchst und ersetzt regexes, suchst nach dem Wort auf dem der cursor steht? Und das ohne Maus und mit deutlich weniger Tastendrücken als in anderen Editoren?

    Und das sind nur Dinge, die mir als emacs-user von VIMlern vorgehalten werden.

    (*Ja, emacs hat kein Standardbinding für aktuelle-Zeile-kopieren 😞 )

    Leider sind die Nachteile, dass vim und emacs nicht wirklich IDEs sind, und dass man damit die _wirklich_ Zeitsparenden Features (zu einer Klasse springen, Doku nachschauen, semantische Completion, _gute_ Integration mit Compiler und Debugger, vernünftige "Intuitive Bedienung" d.h. Menüelemente mit sichtbaren Keybindings und Hints) erst mühsam installieren muss. Es gibt Menschen, denen das gefällt, und die geben damit dann manchmal an. Das ändert aber nichts daran, dass das Zeit kostet, und zwar nicht wenig.

    Emacs, hingegen, ist eine Plattform, und genießt sämltliche Vorteile dieses Statuses. Leider ist es eine nicht so weit verbreitete Platform, gerade im Vergleich zu Windows, X, eclipse. Deswegen sind die Tools dafür in der Regel von minderer Qualität, d.h. sie erhalten gängige Funktionalität später, haben mehr Bugs und sind schlechter gepflegt.

    Beispiel: magit für emacs. Bevor ich gitk und gitgui gestartet habe, habe ich das aktuelle Changeset aus dem Editorfenster schon (Hunkweise) commited und kommentiert, ohne den Flow zu verlieren. Wenn es denn nicht mal die Kommunikation mit dem git-Prozess verhaut, und ich manuell fixen/emacs neustarten muss, was mich den Zeitgewinn zehnfach kostet.



  • normaltipper schrieb:

    Also ist vim dann auch schon eine IDE?

    Ne, aber du kannst dir krampfhaft selbst eine IDE mit den nötigen Plugins zusammenbasteln.



  • Steffo schrieb:

    normaltipper schrieb:

    Also ist vim dann auch schon eine IDE?

    Ne, aber du kannst dir krampfhaft selbst eine IDE mit den nötigen Plugins zusammenbasteln.

    Diese negative Haltung ist schon ein wenig übertrieben. Man kann mit Vim auch out-of-the-box seinen Sourcecode bequem navigieren. Einmal kurz ctags über den Quellcode laufen lassen und fortan kannst du in Vim bequem zu allen Deklarationen/Definitionen springen.

    Und mit :find kann man extrem schnell zwischen den Dateien eines Projekts wechseln ohne, dass man lange darüber nachdenken muss wo diese nun liegen. Z.B., wenn ich zur main.c springen will, dann tippe ich :find main.c und schon bin ich in der main.c

    Ist natürlich nur ein statisches Beispiel. Man muss find nicht ausschreiben und es gibt natürlich tab-completion für das Argument von :find.



  • Wieviele Zwischenablagen hat vim?



  • fragggee schrieb:

    Wieviele Zwischenablagen hat vim?

    Auf jeden Fall 26 die deiner Frage genügen.



  • Ich finde das mit den mehreren Zwischenablagen beim VisualStudio ein ziemlich nützliches Feature.

    Ich frag mich gerade, ob es auch praktisch wäre, mehrere Cursors zu haben, also so ähnlich wie bookmarks, nur als Cursor. Hat vim sowas?



  • Kp wie es mit vim ist, aber emacs hat diese "bookmarks". Man speichert eine Cursorposition und kann später wieder dorthinspringen. Funktioniert auch über mehrere Files.



  • Steffo schrieb:

    Die Diskussion vim vs. emacs ist obsolet, weil es mittlerweile Sublime Text 2 unter jeder Plattform gibt.
    Wenn man coden will, gibt es m. A. n. objektiv betrachtet, keinen besseren Editor.

    Das kann man kaum provokativer formulieren.

    Ich habe Sublime kurz ausprobiert und bin zum Schluss gekommen, dass er unbrauchbar ist.

    • Build-Kommando schlecht. Erstens ist das Ausgabeterminal schlechter als das Default-Terminal von Emacs (und das ist schon sehr schlecht), und zweitens werden die Compilerausgaben überhaupt nicht gehighlighted. Wenn dann ein paar Template-Fehler kommen hat man verloren.
    • Automatische Einrückung schwach. Copy/Paste von behält den Einzug standardmässig bei. Ein spezielles Past soll automatisch einrücken, aber funktioniert nicht richtig. Unformatierten Code (z.B. if+block auf selber Ebene) automatisch einrücken zu lassen geht nicht
    • Viel zu wenig Sprachen. Ini-Files, Conf-Dateien, LaTeX, alles fehlt. Und die Liste im Menu ist jetzt schon viel zu lang um vernünftig mit der Hand auswählen zu können.
    • Layouts umständlich. Ein File links, zwei Files rechts geht nicht ohne weiteres.
    • Im Endeffekt codet man wieder mit der Hand. Datei öffnen: Man muss mühsam in einem Dialog herumklicken. Tab wechseln: Wenn viele Dateien geöffnet sind, kommt man nicht umhin, den richtigen mit der Maus auszuwählen.

    Und trotz allem ist es ein reiner Editor. Dort hinkt er hinter Emacs hinterher, z.B. mehrere Zwischenablagen, Einrückung, etc. Dort sind Emacs und Vim auch kaum zu übertreffen.

    Was Sublime völlig fehlt sind elementare IDE-Features. Emacs hat Debugger-Unterstützung, eingebaute Shells, und kann zu Compilerfehlern und Definitionen springen, uvm.

    Um es m. A. n. objektiv zu formulieren: Sublime ist ein passabler Editor aber eine grottige IDE und verliert gegen Emacs und Vim in allen Bereichen*. Gegen normale IDEs (VS, C::B) hat er beim Editieren minimale Vorzüge, kann aber bei fortgeschrittenen Hilfsmitteln nicht mithalten.

    * Ausgenommen einer DAU-geeigneten Bedienung -- vielleicht kommst du deshalb mit ihm besser zurecht.



  • @emmer: Hast du mal ein Profi das Teil nutzen sehen?
    Der Tutor hier, hat selbst lange vim benutzt:

    http://net.tutsplus.com/articles/news/perfect-workflow-in-sublime-text-free-course/

    Außerdem gibt es ein sogenanntes Vintage Mode, d. h. deine vim-Befehle stehen dir wieder zur Verfügung.

    Einige deiner Kritikpunkte gehen auf Unkenntnis zurück. Z. B. können Sprachunterstützungen nachinstalliert werden. Das Auswählen einer Datei geht auch per Shortcut (STRG + P) etc.

    Compilerunterstützung sind von der Sprache abhängig, wenn ich mich recht erinnere.

    L. G.
    Steffo


Anmelden zum Antworten