it-swarm.dev

Ich verwende ein IDE (Eclipse)), um Software zu entwickeln. Warum sollte ich zu vim oder emacs wechseln?

Mein Tagesjob ist Java/Webentwickler. Ich benutze Eclipse seit ~ 5 Jahren. Ich denke, es ist ausgezeichnet und ich benutze Webstorm auch für Javascript und HTML/JSP.

Ich muss gelegentlich in den Server ssh und mit Konfigurationsdateien herumspielen; dafür benutze ich vi und es schmerzt mich. Ich muss eine Webseite mit der Syntax/den Befehlen aufrufen: Drücken Sie die Esc-Taste, dann das Sternchen, drehen Sie sich dreimal um und der Text wird zwei Zeilen über Ihrem Cursor eingegeben . Es ist so nicht intuitiv für mich, und ich stelle mir jeden vor, der Ende der achtziger Jahre der neunziger Jahre aufgewachsen ist.

Hier sind die Hauptgründe, warum ich Eclipse für brillant halte (und ich nehme andere IDEs an) und nicht zu Emacs und/oder Vim wechseln.

  • Fehlerhervorhebung ohne erneutes Kompilieren des Projekts.
  • Code-Unterstützung.
  • Refactoring.
  • Eröffnungsaufruf hiearchy/Eröffnungserklärung.
  • Vollständig in die Quellcodeverwaltung integriert.
  • Debugger ist enthalten.
  • verfügbarkeit von Plugins von Drittanbietern - zB Findbugs/Checkstyle.

Eines der Argumente, die ich höre, ist, dass Sie mit emacs/vim Ihre eigenen Plugins erstellen können - OK, aber das können Sie auch in Eclipse. Das musst du aber nicht, da schon alles da ist! Es ist wie zu sagen, kaufen Sie dieses halbgebaute Auto, Sie können den Rest selbst bauen.

Warum benutzen Leute Emacs/Vim? Arbeiten Menschen, die es verwenden, tatsächlich an komplexen objektorientierten Projekten in großen Organisationen?

Was sind die Gründe für einen Wechsel zu vim/emacs. Wie würde sich meine Produktivität erhöhen, wenn ich wechseln würde?

31
NimChimpsky

Verwenden Sie ein Werkzeug, das Ihren Anforderungen entspricht. Das Wissen um VIM oder Emacs ist eine gute Sache, wenn Sie sich jemals bei einem Remote-Server anmelden und eine Konfigurationsdatei oder ähnliches bearbeiten müssen. Ich weiß VIM ziemlich gut) , aber ich würde es nicht verwenden, um in Java zu entwickeln. Dafür sind Eclipse, Netbeans usw. gemacht.

36
user281377

Emacs und Vi haben noch einen Platz.

  • Sie sind in Unix- und Unix-ähnlichen Umgebungen allgegenwärtig verfügbar und können auf den meisten anderen gängigen Plattformen installiert werden.

  • Sie sind beliebt und stabil, daher lohnt es sich auf lange Sicht, sie einmal zu lernen.

  • Sie werden über ein Textterminal ausgeführt, sodass Sie sie in Telnet- und SSH-Sitzungen verwenden können.

  • Sie bieten Bearbeitungsmodi und Syntaxhervorhebungen für eine Vielzahl von Sprachen, einschließlich sehr neuer und sehr seltener Sprachen. (Dies ist einer meiner Lieblingsvorteile.)

Der Schlüssel zum Verständnis dieser Programme besteht jedoch darin, zu wissen, welche Probleme sie ursprünglich lösen sollten. Für Vi wurden Textdateien über Terminalverbindungen mit einer Geschwindigkeit von nur 300 Baud bearbeitet. In dieser Umgebung möchten Sie keine Menüs anzeigen oder den Bildschirminhalt radikal ändern, wenn Sie dies vermeiden können.

Emacs sollte in einer schnelleren Umgebung eingesetzt werden. Die Stärke war, dass es einmal geladen und nie verlassen werden konnte. Der Benutzer konnte jede andere Aufgabe, die er von Emacs benötigte, ausführen, ohne sie zu verlassen, und dies oft auf eine freundlichere Art und Weise, als wenn er dies über die Befehlszeile tun müsste. Die Benutzer hatten keine grafische Desktop-Umgebung mit geöffnetem Emacs-Fenster. Mit Emacs kann der Benutzer fast jede normale Aufgabe (und viele seltsame) mit nur wenigen Tastenanschlägen ausführen. Alles, was nicht eingebaut ist, kann per Skript erstellt werden.

Offensichtlich haben sich die Bedürfnisse der Menschen seit Einführung dieser Programme stark verändert, aber sie haben immer noch einige echte Stärken. Ich habe die Grundlagen von beiden gelernt und benutze sie wöchentlich. Trotzdem denke ich, dass ihre Stärken oft überbewertet sind. Sie haben einen so legendären Status erreicht, dass die Leute ihre Schwächen nicht eingestehen und stattdessen glauben, dass sie etwas falsch machen, wenn Emacs/Vi sie nicht produktiver macht als Eclipse oder Visual Studio.

Nun zum Punkt.

Java ist eine beliebte Sprache mit hervorragender Unterstützung in Eclipse. Wahrscheinlich entwickeln Sie Code auf einem modernen Betriebssystem, mit dem Sie schnell allgemeine Aufgaben ausführen und andere skripten können, ohne dies über Ihre IDE zu tun. Ich denke nicht, dass es für Sie sinnvoll wäre, zu wechseln.

39
PeterAllenWebb

Ich benutze Emacs seit mehr als 5 Jahren. Ich kann Ihnen nicht mehr sagen, welche Tastenkombinationen ich verwende. Meine Finger erinnern sich nur an sie und müssen auf die Tastatur schauen, um zu sehen, was meine Hände tippen.

Vor ein paar Jahren habe ich angefangen, Eclipse zu verwenden, und es besteht keine Chance, dass ich frei zu Emacs zurückkehre. Tut mir leid, Muskelgedächtnis, obwohl du dein altes C-x r SPC 1 Vermisst, macht mich Eclipse viel produktiver und das ist es, was zählt.

Nein, ich denke nicht, dass Sie wechseln sollten, aber Sie sollten ein paar Stunden investieren, um die Grundlagen von vim zu erlernen, damit Sie es nicht mehr nachschlagen müssen.

16
Martin Wickman

Warum sollte ich zu Vim oder Emacs wechseln?

Höchstwahrscheinlich sollten Sie nicht wechseln . Vim ist ein ausgezeichneter, leistungsstarker Texteditor, aber er ist nicht ein Ersatz für eine IDE, und sollte nicht sein ! Eclipse ist sehr gut darin Die Teilmenge der IDE-spezifischen Dinge und vim ist sehr gut in der Teilmenge der textbearbeitungsspezifischen Dinge. Jeder hat seinen eigenen, unterschiedlichen Fokus.

Ich weiß, dass es Plugins gibt, die die Funktionalität von vim erweitern, so dass es viele der gleichen IDE-spezifischen Dinge tun kann, die ein IDE kann. Aber es ist immer noch nicht die Hauptstärke von vim, und ein IDE wird es fast immer besser können. Denn darauf konzentrieren sie sich.

Was ich in meiner täglichen Arbeit mache, ist , dass ich sowohl Visual Studio als auch vim zum Bearbeiten von C # verwende. Es funktioniert sehr gut für mich und ich würde niemals einen von ihnen herausschneiden, um mich ausschließlich auf den anderen zu verlassen.

Was Emacs angeht, bin ich kein Experte, aber ich glaube nicht, dass es mit den IDE Funktionen von Eclipse konkurrieren kann, wenn es um Java geht (bitte korrigieren Sie mich, wenn ich falsch liege ). Wenn Sie in LISP entwickeln, kann es sicherlich als hervorragende IDE angesehen werden, aber ich denke nicht, dass es die gleiche Unterstützung für Java bietet.

Wenn Sie also einen leistungsstärkeren Texteditor neben Eclipse verwenden möchten, würde ich Ihnen auf jeden Fall empfehlen, entweder Vim oder Emacs zu lernen. Aber als Ergänzung, nicht als Ersatz . Es kann sich auf lange Sicht wirklich auszahlen, obwohl keiner von ihnen eine besonders einfache Lernkurve hat :)

Hier ist ein Schöne längere Lektüre über die Stärken von vim. Und hier ist eine Liste einiger netter Tricks, die du machen kannst.

7
Nick Knowlson

Lesen Sie im Grunde this (PDF), um zu sehen, warum Emacs leistungsstark ist. Sobald Sie LISP kennen, ist es fast trivial einfach, Erweiterungen dafür zu schreiben (ich habe mehrere Quellcodeverwaltungs-Workflows und Bereitstellungen, die über ein Add-On geschrieben wurden, das ich für mich selbst geschrieben habe und das employer-mode Heißt). Soweit Sie oben aufgeführt sind;

  • Fehlerhervorhebung ohne erneutes Kompilieren des Projekts. Ist nicht für alle Sprachen sinnvoll. Sie können einfach REPLs vieler Sprachen darin integrieren. Im Moment habe ich Ruby, python, haskell, common LISP, scheme und erlang alle in Emacs eingebunden . Übrigens hat das JavaScript-Addon js2-mode Eine vollständige inkrementelle "Kompilierung", so dass es Dinge wie Syntaxfehler für Sie hervorhebt, also ist es sicherlich möglich, aber nicht die Norm
  • Code-Unterstützung. Es gibt ein Addon dafür, das autocomplete.el heißt. Ich glaube, überprüfen Sie das Emacs-Wiki
  • Refactoring. Ich nehme an, Sie meinen "automatisiertes Refactoring", was nicht in allen Sprachen Sinn macht. Gibt es wahrscheinlich für einige, aber ich weiß es nicht.
  • Eröffnungsaufruf hiearchy/Eröffnungserklärung.
  • Vollständig in die Quellcodeverwaltung integriert. Ab Emacs 22.3 ist ein git-mode Eingebaut, bei anderen Quellcodeverwaltungen nicht sicher
  • Debugger ist enthalten. Sprache für Sprache hier. Wenn es REPL Integration) hat, hat es im Allgemeinen auch einen Emacs-Debugger, aber es ist nicht universell
  • verfügbarkeit von Plugins von Drittanbietern - zB Findbugs/Checkstyle. weiß nichts über diese spezifischen, aber es gibt viele Addons dafür, vom Warum-ist-das-nicht-im-Basis-Paket-nützlich-nützlich bis zum absolut frivolen

Das heißt, wenn Sie LISP nicht mögen und nicht beabsichtigen, es zu lernen, kann ich Emacs nicht ehrlich empfehlen. Der Gewinn, den Sie daraus ziehen, besteht darin, das Herstellen von Werkzeugen zu erlernen und diese Prinzipien anzuwenden, um Ihre eigene Produktivität zu steigern, ohne eine Reihe von Mods von der Stange zu bekommen und sie aneinander zu reihen.

6
Inaimathi

Ich sehe hier zwei Möglichkeiten:

  • Verwenden Sie stattdessen Nano - Dies ist genau wie Notepad in Windows für Linux. Wenn Sie keine Hotkey-Kombinationen benötigen, geben Sie einfach nano somefile.conf und du hast einen netten Editor. Sie können sogar Syntaxhervorhebung hinzufügen
  • Behalten Sie das Programm lokal bei und synchronisieren Sie es über SCP mit dem Server. Ich mache dies, wenn ich an einer kleinen Website arbeiten muss, aber nicht über genügend Ressourcen verfüge, um Apache lokal auszuführen. Ich rufe einfach WinSCP auf, rufe die gewünschten Verzeichnisse auf und verwende "Remote-Dateien auf dem neuesten Stand halten". Änderungen werden normalerweise in Sekunden angezeigt
  • Verwenden Sie ein Plugin in Ihrem Editor/Ihrer IDE, um "direkt" mit der Remote-Datei zu arbeiten. Bevor ich mich um die Revisionskontrolle kümmerte, habe ich einfach Notepad ++ (meinen bevorzugten Editor) gestartet und NppFTP verwendet, um an den Dateien zu arbeiten. NppFTP ist schneller als die WinSCP-Option, da Npp es sofort beim Speichern einer Datei mitteilt, die sofort hochgeladen wird. Wie gesagt, Sie verlieren jedoch die Revisionskontrolle. Ich bin sicher, es gibt ein Plugin für Eclipse, das Sie verwenden können

Hoffe das hilft

3
TheLQ

Persönlich mag ich Vim, weil es sehr gut Text bearbeiten kann, dh sehr ergonomisch (die Tastenkombinationen belasten meine Hände nicht so sehr und ich muss die Maus nicht so oft benutzen) und effizient zu verwenden, sobald Sie den Dreh raus haben es (was natürlich Zeit und Geduld erfordert, da es nicht der intuitivste Editor für Anfänger ist).

Ich würde jedoch Eclipse für die groß angelegte Entwicklung bevorzugen Java Entwicklung aufgrund der vielen Funktionen, die leicht verfügbar sind. Natürlich gibt es einige Plugins , die Eclipse ein bisschen machen können erträglicher.

2
user7908

Ich versuche gerade, von NetBeans zu vim zu wechseln. Das Erlernen von vim erfordert Zeit und Übung, aber ich sehe seine Vorteile gegenüber. Nennen wir sie in bestimmten Fällen "GUI-Editoren".

Aber im Gegensatz zu Ihnen codiere ich hauptsächlich Ruby, und ich brauche nicht all die Code-generierende, automatische Vervollständigung, Refactor-My-Code-Black Magic, die NetBeans und Eclipse bieten. Wenn ich Java oder C #) codieren würde, würde ich mit Sicherheit überhaupt nicht versuchen, zu wechseln.

1

Als langjähriger Benutzer von Emacs finde ich Emacs als Bearbeitungs- und Entwicklungsumgebung recht komfortabel (und in gewissem Maße auch in den Erstellungsprozess, die Versionskontrolle, die schnelle kontextsensitive Suche und dergleichen integriert, denke ich, dass dies qualifiziert ist es als "IDE").

Ich bin auch sehr zufrieden mit der Verwendung von vi und vi-ähnlichen Editoren (ich habe mit ed angefangen, weil ich dachte, Emacs sei zu komplex; im Nachhinein ist das rückwärts, aber es gab mir eine solide Grundlage für das zukünftige Erlernen von vi). Ich verwende vi hauptsächlich für "kleine schnelle Bearbeitungen", hauptsächlich auf Remote-Computern, auf denen Emacs nicht installiert sind.

Für Ihr Szenario "Ich muss gelegentlich in den Server ssh und mit Konfigurationsdateien herumspielen; für dieses Szenario verwende ich vi" würde ich eine kleine Reihe von Befehlen und einige allgemeine Gedanken zu vi empfehlen:

  • Vi ist nicht modal, es enthält die Befehle "a" (Anhängen), "A" (Anhängen am Zeilenende), "i" (Einfügen) und "I" (Einfügen am Zeilenanfang), wobei der einzufügende Text verwendet wird als Argument und Signalisierung "Befehlsende" mit Esc
  • h, j, k und l sind Bewegungstasten. Es kann mit den Pfeiltasten funktionieren, aber da die typische VT-artige Sequenz "Ich bin eine Pfeiltaste" mit Esc beginnt, wird der Befehl zum Einfügen von Text, an den Sie nicht denken, unterbrochen
  • : linenum bewegt Sie zur Linie linenum , Zeile 1 ist die oberste Die meiste Zeile und Zeile $ ist die unterste
  • . ist der Befehl "letzten Befehl wiederholen" (siehe den ersten Aufzählungspunkt)

Es sollte nicht länger als ein oder zwei Stunden dauern, um mit vi herumzuspielen, um bei "Ich kann eine Textdatei sicher bearbeiten, aber ich bin möglicherweise nicht effizient damit" zu sein, und das ist so gut, wie Sie es wahrscheinlich brauchen werden . Andernfalls sollte jeder Editor, der sich nicht mit der automatischen Konvertierung zwischen Tabulatoren und Leerzeichen befasst, für Ihre Zwecke "gut genug" sein. Wenn Eclipse auf allen Ihren Remote-Servern installiert ist, sehe ich die Verwendung nicht wirklich als großes Problem an.

1
Vatine

Wenn Sie mit Eclipse zufrieden sind, wechseln Sie nicht.

Wenn Sie Eclipse überall verwenden können, wechseln Sie nicht.

Wenn Ihr Projekt/Unternehmen fast ausschließlich Eclipse verwendet, wechseln Sie nicht.

Wenn Sie nur selten etwas anderes benötigen, drucken Sie ein Spickzettel für einen der Editoren aus und ziehen Sie es bei Bedarf aus der Schublade. Verwenden Sie dann wieder Eclipse.

Siehe die (gleiche) Frage bei SO: https://stackoverflow.com/questions/1346820/what-are-the-efficiency-afforded-by-emacs-or-vim-vs-Eclipse

Was die Antwort betrifft: "Arbeiten Menschen, die es verwenden, tatsächlich an komplexen objektorientierten Projekten in großen Organisationen?" - Halten Sie Ihren Hut fest, aber die Antwort lautet "Ja". Ich habe an Projekten mit zig Millionen Codezeilen gearbeitet, die im kritischen Pfad des Entwurfs der CPU verwendet werden, auf der der Computer ausgeführt wird, auf dem Sie diese Frage stellen. Und die Leute haben Eclipse ausprobiert, fanden es aber zu langsam und klobig (obwohl wir zugegebenermaßen kein Java verwendeten).

1
Trey Jackson

Ich bin sehr ein Emacs-Typ. Ich benutze es für alle meine Programmierungen und ermutige meine Mitarbeiter aktiv, es auch zu verwenden (und sie ignorieren mich aktiv). Ich finde es weitaus produktiver als jede IDE und würde mich nie ändern.

Es sei denn, ich schreibe Java oder C # (und ich stelle mir vor, es gibt andere Sprachen in dieser Kategorie). Sie haben so große Bibliotheken von Zeug mit langen Namen, dass die Gewinne - I Wenn Sie Emacs verwenden, verlieren Sie völlig den Versuch, sich an alles zu erinnern.

Ich ermutige Sie auf jeden Fall, versuchen vim und/oder Emacs. Aber Sie werden wahrscheinlich wieder in Eclipse für Java landen.

1
MattBelanger

Sowohl Emacs als auch Vim sind sehr konfigurierbare und leistungsstarke Editoren. Beide bieten große Produktivitätsgewinne, sobald die grundlegenden Konzepte verstanden sind.

Vi gewinnt mit im Wesentlichen satzbasierten Operationen. Das Ändern aller Instanzen von "foo" in "bar" in einer Klassendefinition ist beispielsweise ein Einzeiler.

Emacs ist ebenso mächtig, aber Sie müssen Emacs LISP lernen, um sein volles Potenzial auszuschöpfen.

In beiden Fällen lohnt es sich nur zu wechseln, wenn Sie Emacs oder vi für alles verwenden möchten.

1
Larry Coleman

Das beste Werkzeug (kurzfristig) ist eines, mit dem Sie sehr gut umgehen können.

Menschen verwenden über 30 Jahre alte Technologie, weil sie damit sehr gut umgehen können. Sie bauten ihren Workflow und ihre Gewohnheiten auf diesen Tools auf. Wenn Sie mit einem modernen IDE wie Eclipse) besser vertraut sind, gibt es nicht viel Grund, zu wechseln. Das effizientere Verwenden von Eclipse ist eine bessere Investition Ihrer Zeit (z. Mylyn ).

1
dbkk

Persönlich treiben mich beide Programme an die Wand. Das Problem mit Eclipse ist, dass es bei der Arbeit an einem großen Projekt langsam wie Rotz ist und dann keine DGLP-Indizierung oder was auch immer durchführt. Möchten Sie Ihr Repository aktualisieren? 15 Minuten? Oh, und wie wäre es mit diesem raffinierten Trick, bei dem Sie einen Text mit Strg-C und dann irgendwo mit Strg-P ​​drücken, aber anstatt dorthin zu gehen, wo Sie ihn haben möchten, wird eine völlig andere Datei geöffnet und über etwas anderes hinweggegangen, und Sie fragen sich, ob wtf da war an erster Stelle. Oh und habe ich erwähnt, dass ich mit Eclipse an einem großen Projekt über einen VPN arbeite? praktisch unmöglich.

Vim ist nett und schnell, vorausgesetzt, Sie kennen die Vielzahl völlig sinnloser Tastenkombinationen, damit es etwas tut, und viel Glück, wenn Sie sich versehentlich in einem unbekannten Modus befinden. Auch mit vim müssen Sie Ihre gesamte Projektverzeichnisstruktur in Ihrem Kopf kennen, um die richtigen Dateien zu öffnen. Der Hauptvorteil von Vim ist, dass Sie theoretisch Code schneller erstellen können, weil alle Schlüssel vorhanden sind. In Wirklichkeit ist es mir jedoch egal, wie viel Text ich schreibe. Es ist nicht das Textvolumen, das für die Qualität des Codes und häufig für die Qualität von Bedeutung ist Für Code müssen Sie stundenlang auf Dutzende von Dateien starren, bis Sie genau das Richtige für die Eingabe herausgefunden haben (was normalerweise sehr kurz ist).

Was ich mir wünsche, ist, dass jemand ein Befehlszeilenprogramm wie vim schreibt, das tatsächlich eine Verzeichnisstruktur wie Eclipse an der Seite hat oder etwas, von dem aus man Dateien erweitern/reduzieren und öffnen kann. Weiß jemand so etwas?

0
Dallas Caley

Ich habe kein Problem mit den verschiedenen verfügbaren UNIX-Editoren, aber ich benutze sie immer nur aus Protest. Nicht, wie ich schon sagte, weil ich ein Problem mit ihnen habe, sondern weil, wenn ich sie verwenden muss, dies bedeutet, dass unser Bereitstellungsprozess in irgendeiner Weise fehlt.

Dies verdient wahrscheinlich etwas mehr Kontext: Ich arbeite an umfangreichen E-Commerce-Lösungen. Alles, was den Betrieb unserer Systeme regelt, wird durch einen Ein-Klick-Build/Deploy-Prozess generiert. Wir haben eine Reihe von Testumgebungen, sodass ich jederzeit eine Änderung über Eclipse vornehmen, sie in Lebensläufe einchecken und einen Build/Deployment auslösen kann, um zu beweisen, dass mein Fix funktioniert hat. Wenn ich mich also in 'vi' herumhacke, liegt das daran, dass wir nicht auf die 1-stündige Bearbeitungszeit einer Bereitstellung warten können oder dass die Bereitstellung nicht die Dateien abdeckt, die ich bearbeite, und dafür erweitert werden muss also (sonst werde ich in vi hacken, wenn die betreffende Datei das nächste Mal geändert werden muss).

0
DanW