it-swarm-eu.dev

Zeit, Emacs und vi fallen zu lassen?

Jedes Mal, wenn Sie nach einem Texteditor suchen, egal welche Sprache Sie verwenden, sind vi und Emacs Hall of Famers.

Sie sind jedoch uralt und wir haben bessere Alternativen (zumindest hoffe ich, dass wir dies tun).

Warum stecken Entwickler in diesen beiden Editoren fest? Sollten wir sie nicht fallen lassen und versuchen, etwas Neues zu erfinden oder zu suchen?

(Ich habe vollen Respekt vor Emacs und vi Fans).

40
Chiron

Die Hauptgründe, warum ich einen terminalbasierten Editor einer vollwertigen IDE vorziehe:

  • Fernzugriff. Ich kann ssh auf jeden Computer, auf dem ich sein muss, Vim starten und anfangen zu arbeiten. Täglich ermöglicht die Verwendung von screen session und Vim einen einfachen Zugriff von jedem Ort aus.
  • Tastenanschläge. Es werden so viele Tastenanschläge gespeichert, sobald Sie Emacs oder Vim in angemessenem Umfang verwenden können. Das Bewegen meiner Hand zwischen Tastatur und Maus ärgert mich ...

IDEs sind schön, Klassen in Ihrem Projekt herumzuwerfen, aber für mich ist meine Produktivität mit Vim um Größenordnungen höher.

82
J.K.

Programmierer sind dafür berüchtigt, die Tools zu verwenden, mit denen sie ihre Arbeit so effizient wie möglich erledigen können. Diese Editoren sind uralt und werden immer noch verwendet, da sie gute, solide Editoren sind, die sich durch die Zeit bewährt haben. Wenn sie die Arbeit erledigen und erledigen gut, warum sollten wir sie zugunsten von etwas anderem fallen lassen?

66
Michelle Tilley

Sie nehmen an, dass sie sich nicht weiterentwickeln. Emacs wächst weiterhin sprunghaft; und während vi irgendwie heiser wurde, hat Vim es verjüngt und wenn überhaupt, wächst es (zumindest in Bezug auf die Funktionen) schneller als Emacs.

Aber wenn es darauf ankommt, ist es das, womit Sie am besten arbeiten. Wenn Sie in Eclipse am produktivsten sind, haben Sie mehr Leistung. Gleiches, wenn Sie Vim bevorzugen.

57
geekosaur

Viele (die meisten?) Der besten Programmierer, die ich kenne, verachten IDEs und verlassen sich ausschließlich auf Emacs. Ich bin nicht ganz so eingefleischt und benutze sowohl Eclipse als auch Emacs, aber es gibt einige Gründe, warum ich Emacs bevorzuge:

  • Konsistente Erfahrung mit JEDER Sprache - Die Unterstützung in Eclipse für einige der neueren Sprachen (Scala, Clojure usw.) ist bestenfalls inkonsistent und im schlimmsten Fall unterdurchschnittlich . Die Plugin-Autoren arbeiten hart daran, die Erfahrung zu verbessern, aber ich stoße oft auf kleine Dinge, die sich nervös anfühlen. Natürlich können Sie jederzeit zu einem anderen wechseln IDE, das diese bestimmte Sprache besser unterstützt, aber jetzt jonglieren Sie mit IDEs. Ich habe mich bei der Arbeit in Emacs noch nie so gefühlt.

  • Ich mag nicht IDE "magic" - IDEs neigen dazu, viele Dinge automatisch im Namen der Bequemlichkeit zu erledigen ist großartig ... bis etwas kaputt geht. Dann kann es ein frustrierender oder sogar ärgerlicher Prozess sein, die Dinge wieder auf Kurs zu bringen.

Ich habe mit der Idee gespielt, zu Redcar-Editor zu wechseln. Es ist erweiterbar wie Emacs, aber anstelle von Emacs LISP verwenden Sie JRuby . Es ist leicht und definitiv keine ausgewachsene IDE. Wenn Sie sich für TextMate interessieren, ist es mit TextMate-Bundles kompatibel, hat jedoch den Vorteil, dass es kostenlos und Open Source ist. Auf jeden Fall ein Tool, das einen Besuch wert ist, insbesondere für Ruby Entwickler).

40
dbyrne

sollten wir sie nicht fallen lassen und versuchen, etwas Neues zu erfinden oder zu suchen?

tl; dr: Viele Leute wollen keinen neuen Editor lernen

Die vollständige Antwort:

Ein UNIX-Assistent hört Qualen aus dem Computerraum seines Lehrlings, in dem der Lehrling studiert, und geht zur Untersuchung.

Er findet den Lehrling in offensichtlicher Not, fast am Rande der Tränen. "Was ist das Problem?" er fragt. "Warum hast du geschrien?"

"Es ist schrecklich, dieses System zu verwenden. Ich muss jeden Tag vier Redakteure einsetzen, um meine Studien zu erledigen, weil keiner von ihnen alles macht."

Der Zauberer nickt weise und fragt: "Und was würden Sie vorschlagen, um dieses offensichtliche Dilemma zu lösen?"

Der Schüler denkt einige Minuten lang sorgfältig nach und sein Gesicht leuchtet dann entzückt auf. Aufgeregt sagt er: "Nun, es ist offensichtlich. Ich werde den besten Redakteur aller Zeiten schreiben. Er wird alles tun, was die bestehenden vier Redakteure tun, aber ihre Arbeit besser und schneller erledigen. Und dank meines neuen Redakteurs wird die Welt sein." ein besserer Ort."

Der Zauberer hebt schnell die Hand und schlägt dem Lehrling auf die Seite seines Kopfes. Der Zauberer ist alt und gebrechlich, und der Lehrling ist nicht körperlich verletzt, sondern schockiert über das, was passiert ist. Er dreht den Kopf, um den Zauberer anzusehen. "Was habe ich falsch gemacht?" er fragt.

"Täuschen!" sagt der Zauberer. "Glaubst du, ich möchte noch einen Redakteur lernen?"

Sofort wird der Lehrling aufgeklärt. http://neugierig.org/content/unix/

27
Hery

Ich denke, die IDEs (Visual Studio, Eclipse, IntelliJ) sind geeignet, eine andere Klasse von Problemen zu lösen als die, die Sie mit emacs/Vim lösen.

Wenn Sie eine große Plattform zum Codieren haben, mit vielen Bibliotheken und einer hohen Integration aller Elemente (klingt wie Microsoft), wird ein IDE beweisen, dass es sich lohnt. Einige werden dies als "Zusammenkleben von Bibliotheken" bezeichnen und nicht annehmen, dass es sich um "echten Code" handelt. Es wird Ihnen jedoch sehr helfen, wenn Sie Fehler frühzeitig erkennen (auf eine Weise, die selbst Emacs nicht kann).

Wenn Sie Endbenutzeranwendungen für (sagen wir) Android entwickeln, können Sie dies tatsächlich ohne Eclipse tun. Mit allen Arten von Dateien, die vor der Bereitstellung hinzugefügt werden müssen, hilft Ihnen Eclipse jedoch sehr, indem es diese Aufgaben für Sie automatisiert.

Wenn Sie also ein Anwendungsentwickler sind, der nur auf einer Plattform mit vielen Bibliotheken arbeitet (Entwicklung von Anwendungen der Enterprise-Klasse in Java EE, .NET usw.), ist ein IDE ein " Verbesserung "in Ihrem Workflow. Sobald Sie jedoch regelmäßig in einer Terminalumgebung arbeiten müssen (z. B. auf Unix-Servern) oder viele verschiedene Sprachen verwenden, kann No IDE an den Eigenschaften von Vim/emacs gemessen werden.

Eine letzte Sache ist, dass Sie bei der Arbeit mit Vim/emacs gezwungen sind, zumindest ein wenig von einer Plattform/Sprache zu verstehen, bevor Sie sie verwenden. Mit vielen IDEs können Sie in einer Sprache arbeiten, ohne zu wissen, was los ist. Wenn Sie also Vim/Emacs verwenden, werden Sie gezwungen, einen Einblick in das zu gewinnen, was Sie wirklich tun.

19
vstrien

Im Laufe von rund 40 Jahren im Computer habe ich als Student und Profi mindestens fünfzehn (15) verschiedene Editoren und IDEs verwendet. Von allen war Emacs damals und heute mit Abstand der beste.

Erstens verbringe ich zu viel Zeit damit, zwischen mehreren Dateien und mehreren Stellen in einzelnen Dateien herumzuspringen, um eine gute Erfahrung mit einem Editor zu machen, der es ablehnt, mehr als eine Datei gleichzeitig oder mehr als zwei gleichzeitig anzuzeigen. Emacs ist der einzige Editor oder IDE Ich habe gesehen, dass ich alles, was ich brauche, auf einmal sehen kann. (Vor einigen Jahren hatte ich bei der Erkundung eines Legacy-Systems routinemäßig acht (8) Fenster geöffnet ein Emacs-Fenster. Selbst heute sind routinemäßig drei oder vier Fenster geöffnet, und manchmal sind zwei oder drei Aufrufe von Emacs geöffnet, da ich mehrere Shells benötige und die Ergebnisse kopieren und einfügen muss.)

Zweitens bin ich immer noch nur ein Mensch und mache gelegentlich Fehler. Jeder andere Redakteur, den ich jemals benutzt habe, war vollkommen glücklich, mich ohne Warnung meinen Fuß abschießen zu lassen, ohne dass ich mich erholen konnte, und ließ mich unaussprechlich abscheuliche, gewalttätige Handlungen gegen den Autor des BIPOS begehen. (Diejenigen, die mich erwischt haben, waren nicht ganz so schlimm wie der Topf, der Charles Simonyi beinahe gelyncht hätte, als er bei Xerox PARC war, bevor er zu Microsoft ging und der Welt ungarische Notation zufügte - ein Akt, für den Lynchen völlig zu leise ist eine Strafe.) Emacs hat mir das nie angetan; es hat nie unwiderruflich etwas zerstört, ohne mir eine GROSSE Warnung zu geben. Als ich noch neu bei Emacs war, ging ich gelegentlich zu "Was ist gerade passiert?", Und ich fand ausnahmslos heraus, was ich in wenigen Sekunden getan hatte, und wusste, wie ich es genauso schnell reparieren konnte.

Es gibt keinen Editor, der tatsächlich ERHÖHT Produktivität. Das Beste, was Sie erreichen können, ist eine minimale Verschlechterung der Produktivität. Die Metrik lautet für mich: "Wie schlimm verlangsamt mich dieses Ding?" Im Vergleich zu Emacs ist bei den Dingen, die ich normalerweise mache, alles andere weitaus schlimmer.

Mein NUR Kritik an Emacs war, dass es für Oberon nicht verfügbar war, als ich vor einigen Jahren mit Oberon spielte.

16
John R. Strohm

Abgesehen von ein bisschen BASIC als Kind habe ich das Programmieren unter Unix gelernt. Die Unix-Philosophie besteht darin, viele kleinere Tools zu haben, die zusammenarbeiten, sich aber jeweils darauf konzentrieren, einen Job zu erledigen und ihn gut zu machen. Daher ist es für mich selbstverständlich, eine separate Software zum Bearbeiten, Kompilieren, Versionskontrollieren und Debuggen zu haben. Interessanterweise sind IDEs "integriert", aber Sie können immer noch nicht alle Funktionen auf einmal in ein Fenster einfügen, sodass Sie beispielsweise Perspektiven haben, bei denen Sie ohnehin im Wesentlichen zwischen diesen verschiedenen Aufgaben wechseln, wenn auch mit einigen Überlappungen .

Ich könnte es umdrehen und fragen, warum die Leute schmerzhaft langsame Nicht-Vim-Bearbeitung tolerieren. Der beste Weg, wie ich das Gefühl beschreiben kann, jemanden beim Bearbeiten von Code auf diese Weise zu beobachten, ist, dass es sich anfühlt, als würde man hinter einem Auto stecken bleiben, das 10 Meilen pro Stunde zu langsam fährt, weil er telefoniert, oder als würde man einem relativ schnellen Jagd- und Peckschreiber zuschauen . Sie sind schnell genug, um die Arbeit zu erledigen, aber gleichzeitig langsam genug, um verrückt zu werden.

Viele Leute sagen, dass sie sowieso die meiste Zeit mit Nachdenken verbringen, so dass ein bisschen schnelleres Bearbeiten keinen großen Unterschied macht. In diesem Fall ist das Tippen eine Unterbrechung, und einige zusätzliche Sekunden der Bearbeitung können den Unterschied zwischen dem Beibehalten Ihres Gedankengangs oder dem Wiederherstellen des Gedankengangs ausmachen. Wenn Sie ein langjähriger Touch-Typist sind, wissen Sie auch, dass Ihre Finger gebräuchliche Wörter eingeben, ohne dass Sie sich bewusst überlegen, welche Tasten Sie drücken sollen. Wenn Sie ein langjähriger Vim-Benutzer sind, kommt diese Art von Fluidität für Dinge wie das Bewegen von Linien und Wörtern. In der Zeit, die es dauert, um "Löschen" in "Diese 2 Zeilen löschen" zu sagen, haben es meine Finger bereits getan und meine Konzentration ist völlig ungebrochen.

Vim ist auch extrem anpassbar und Ihre installierten Plugins und vimrc entwickeln sich im Laufe Ihrer Arbeit. Wenn Ihnen etwas im Weg steht, suchen Sie nach einer besseren Möglichkeit, dies zu tun, und integrieren diese in Ihre Konfiguration oder in häufig verwendete Befehle. Ich habe vi im Jahr 1993 gelernt und nehme immer noch Anpassungen vor, wenn sich meine Bedürfnisse ändern. Erst diese Woche habe ich die Vervollständigung meines Tab-Dateinamens geändert, um eher wie Bashs zu funktionieren, da sich mein Workflow in letzter Zeit geändert hat, um viel mehr davon zu tun, und das Standardverhalten mir auf die Nerven ging.

Ich bin auch nicht der Meinung, dass es sich nicht lohnt, etwas zu lernen. Es dauerte viel länger, bis ich das Berühren von Schrift gelernt hatte, als dass ich mich in vi produktiv fühlte, um die Geschwindigkeit der Codebearbeitung zu erhöhen, aber Sie sehen keine Programmierer, die sich darüber beschwerten, wie lange es gedauert hat, das Berühren von Schrift zu lernen. Und Sie können in Ihrem eigenen Tempo lernen und Ihrem Repertoire neue Befehle hinzufügen, wenn Sie die Neigung dazu haben. Wenn Sie in Ihrem vimrc mit set im Beginnen (steht für insertmode, aber ich nenne es liebevoll idiotmode, wenn ein Kollege an meinem Schreibtisch tippen muss), werden Sie möglicherweise gar nicht bemerken, dass Sie vim überhaupt verwenden!

8
Karl Bielefeldt

Ich bin ein Vim-Benutzer.

Ich muss IDEs aufgrund der Projekte verwenden, an denen ich arbeite. Das kann man manchmal nicht umgehen. Ich bin ziemlich kompetent in der Verwendung von Code :: Blocks und Eclipse , aber wenn immer möglich, möchte ich, dass die Benutzeroberfläche dieser IDEs wie die von Vim funktioniert.

Ich habe mein eigenes Farbschema für Vim und ich möchte, dass die Texteditoren anderer IDEs genauso funktionieren.

Ich würde mir eine IDE wünschen, bei der der Texteditor fehlt und wo ich den gewünschten Editor einstecken kann. Wäre es nicht schön, wenn ich mein Standard-Vim in Emacs oder Code :: Blocks einstecken könnte, aber den Rest des IDE um mich herum hätte?

Es ist irgendwie dem Umfang der IDE Entwickler entgangen, aber ich wünsche es mir insgeheim fast immer, wenn ich entweder nur Vim und Makefiles für größere Projekte verwende oder ein IDE und es ist umständlich Texteditor.

8
polemon

Mein IDE der Wahl ist Linux. Heck, es kann andere IDEs ausführen, Websites bedienen, Programme in einer Vielzahl von Sprachen ausführen und durch Kombinieren von Dingen (der Pipe) Programme ausführen, die es waren geschrieben in verschiedenen Sprachen, als ob sie eine wären. Das Ding ist großartig. Oh, und es kann sich mit dem Internet verbinden und alle möglichen interessanten Dinge damit machen, einschließlich des Laichens anderer Versionen von sich selbst. Coolio!

Geben Sie sich nicht mit einem IDE zufrieden, wenn Sie bereits Linux haben.

8

Ich benutze Emacs als meinen primären Editor. Die einzigen anderen Editoren, die ich jemals ernsthaft in Betracht gezogen habe, waren vim und TextMate. IDEs (und ich habe einige ausprobiert, einschließlich Eclipse) hatten nicht die Funktionen, die ich brauchte.

Ich hatte dieses Gespräch tatsächlich vor nicht allzu langer Zeit mit einem Kollegen von mir. Er erzählte mir, wie viel besser IDE sind, während er mit der Maus auf eine Reihe von Schaltflächen und Menüs klickte. Das brachte mich nur zum Lachen.

Ich werde jeden Editor mit den folgenden Funktionen ausprobieren (die alle für meine Entwicklung von entscheidender Bedeutung sind).

  • alle Befehle können durch anpassbare Tastenkombinationen ausgeführt werden
  • ermöglicht Remote-Bearbeitung mit ssh (ja, Emacs hat Remote-Bearbeitung)
  • ermöglicht die sofortige Erstellung und Wiederverwendung von Makros
  • eng integrierte Programmiersprache
  • code und Ausführung mit der Programmiersprache im laufenden Betrieb
  • enge Integration mit GBD und Familie
  • hervorhebung der mehrsprachigen Syntax im selben Puffer
  • automatische Vervollständigung von Schlüsselwörtern, Variablen, Funktionen usw.

Ich neige auch dazu, Meta-Programmierung zu machen, was Auto-Refactor-Tools oft unbrauchbar macht. Der eine Bereich, in dem IDEs meiner Meinung nach gut sind.

6
dietbuddha

Andere Redakteure mit einem ähnlich reichen Erbe (und Kontroversen) wurden erfunden, und vielleicht ist es nur eine Frage der Zeit, bis wir von Tools aus den 1970er Jahren (vi/Emacs) zu Tools aus den 1980er Jahren ( Sam ) oder sogar eine aus den 1990er Jahren ( Acme ).

"Sam ist der bevorzugte Texteditor vieler bedeutender Informatiker; er ersetzte ed Als Ken Thompsons bevorzugten Texteditor und er verwendet ihn bis heute. Sam ist der von Bjarne Stroustrup verwendete Texteditor und Brian Kernighan. Andere, wie Dennis Ritchie, haben stattdessen Acme verwendet. " Hier ist der Sam Artikel von Wikipedia.

Aber was weiß ich, ich benutze immer noch Vim.

5
jtg

Bin ich die einzige Person, die gelegentlich noch ed verwendet?

(Und für diejenigen, die denken, dass Code Bloat relevant ist ...

$ size /bin/ed 
   text    data     bss     dec     hex filename
  42160    2300       0   44460    adac /bin/ed
$ size /bin/vi
   text    data     bss     dec     hex filename
 692378   27796   13884  734058   b336a /bin/vi
$ size /usr/bin/emacs
   text    data     bss     dec     hex filename
2033257 4692020       0 6725277  669e9d /usr/bin/emacs

)


Ein weiterer Vorteil von ed ist, dass Sie es auf einem Teletyp ausführen können ... oder auf dem dümmsten der dümmsten Terminals.

4
Stephen C

Ich nahm an, dass ich eine seltsame Ente bin, aber ich benutze je nach Situation unterschiedliche Editoren.

Vim:

Wenn ich mit einem entfernten Server verbunden bin (z. B. in den Protokollen) und eine Datei schnell bearbeiten und eine Optimierung vornehmen möchte. Viel schneller als von meinem lokalen Desktop zu demselben Ordner (SAN gehostet) zu navigieren.

Notepad ++:

Ungefähr die gleiche Situation: für eine schnelle Bearbeitung, aber diesmal, wenn ich nicht auf das Laden von Eclipse (Unternehmens-IDE) warten möchte.

Eclipse:

Es ist das Unternehmen IDE, in dem ich arbeite. Wir haben einige interne Plugins, um den Build von Eclipse direkt auf einem Remotecomputer starten zu können ... und vor allem ein Plugin zum Auffinden der Bibliotheken Produziert von anderen Teams und mit denen wir arbeiten (und replizieren die Header lokal für eine schnelle Indizierung). Da ich über gut Tausende von Bibliotheken spreche ... ist es wirklich nützlich;)

OpenGrok/Doxygen:

Mehr Code-Browsing als die eigentliche Edition, aber immer noch sehr nützlich! Mein Browser ist für die Navigation konfiguriert, daher wird er hier gut genutzt.

Fazit: Ich benutze nur den Editor, mit dem ich die Aufgabe relativ einfach und anständig erledigen kann.

2
Matthieu M.

"Besser" ist ein subjektives Wort. Wenn ich mit einem Texteditor glücklich und produktiv bin, wer ist dann X oder Y oder Z, um zu sagen: "Lass es fallen und benutze etwas anderes"? Wenn es sich um eine Unternehmenspolitik oder eine solche handelt, die es zu einer unumgänglichen Situation macht, haben wir jedoch keine andere Wahl.

2
Srisa

Ich würde lieber meine eigenen Hände essen, als eine von ihnen zu benutzen. Ich habe Visual Studio geliebt, als ich C++ gemacht habe. Eclipse ist meh. IntelliJ IDEA ist ausgezeichnet. Ich habe JBuilder auch geliebt, aber ich habe es seit Jahren nicht mehr benutzt.

1

Manchmal arbeite ich an meist nackten Systemen, bei denen der einzige installierte Editor vi ist. In solchen Fällen ist es wirklich hilfreich, zumindest grundlegende vi-Befehle zu kennen.

vi und emacs sind auch sehr erweiterbar, so dass sie tatsächlich voll funktionsfähige IDEs mit der richtigen Anzahl von Plugins sein können. Für mich kann ich Dateien in vi viel schneller bearbeiten, da ich meine Hände nicht von der Tastatur nehmen muss, um eine Maus zu bewegen. Es hat auch Funktionen, die ich in einigen IDEs nicht gesehen habe (obwohl ich zugeben muss, dass ich nicht viel ausgesehen habe), wie das Bearbeiten von Textspalten, das Speichern mehrerer "ausgeschnittener" Wörter in mehreren Puffern zum Einfügen usw.

Die Redakteure brauchen etwas Zeit, um zu lernen, aber sie sind auch sehr mächtig. Und ja, sie sind nicht jedermanns Sache.

Eine interessante, etwas verwandte Lektüre ist Warum sollte ich eine IDE verwenden?

0
Jeff

Ich bleibe bei vi, weil es der erste Editor war, den ich in der Schule gelernt habe und mit dem ich heute am produktivsten bin. Ich arbeite mit vielen Unix-Varianten und es ist für alle verfügbar (und es funktioniert unabhängig von der Umgebung auf die gleiche Weise). Es macht das, wofür ich es brauche. Warum also ändern, um sich zu ändern?.

Ich verwende eine IDE für meine Java Arbeit) (jetzt Intellij Idea), aber ich verbringe viel Zeit mit vi.

0
jmq

Gibt gibt es bessere Alternativen? Erst neulich hatte ich eine Liste von Schemanamen, die ich kürzen musste (danke, Oracle!). Mindestens die Hälfte von ihnen endete mit dem Wort "Test". Ich habe beschlossen, den "Test" am Ende zu löschen und dem Namen "T" voranzustellen. In vi war dies ein einfaches Regex-Suchen und Ersetzen. Gibt es neuere Editoren, die dies tun können?

0
TMN