Sind Vim oder Emacs praktisch für Sprachen wie .NET oder Java? [geschlossen]


18

Daher bin ich in erster Linie ein .NET-Entwickler, der von Zeit zu Zeit einige Dinge in Java, Python und einigen anderen erledigt. Ich habe viele Leute gehört, die Vim und Emacs dafür gelobt haben, dass sie die Effizienz erheblich steigern, sobald die Grundlagen feststehen. Ich kann definitiv erkennen, wie viele der Funktionen bei ausreichender Übung sehr nützlich sein könnten, und glaube sogar, dass die Lernkurve wahrscheinlich die Mühe wert ist. Es scheint jedoch, dass Sie wirklich eine Art Assistent für Makros und Hotkeys sein müssen, um in Vim oder Emacs so effizient zu sein wie der durchschnittliche Entwickler in Visual Studio, Netbeans, Eclipse oder anderen Plattformen. Ich habe angefangen zu lernen, wie man mit Vim umgeht, und denke, dass einige seiner Funktionen fantastisch sind (z. B. Spaltenbearbeitung), aber es scheint, dass viele der Tools, die von den schwergewichtigen IDEs bereitgestellt werden, einfach nicht ersetzt werden konnten, um selbst den am stärksten beanspruchten Text zu kaufen Editor.

  • Generieren von DBML-Dateien für Linq-to-SQL
  • Automatisiertes Testen
  • Entwerfen von Benutzeroberflächen
  • Projekte und Lösungen erstellen / organisieren

Ich weiß, dass Vim und Emacs eine Menge der gleichen mächtigen Dinge können, die VS kann (wie Intellisense, Refactoring usw.), und es ist möglicherweise in der Lage, einige oder alle der Beispiele, die ich zur Verfügung gestellt habe, zu machen, aber es ist realistisch zu sagen dass jemand, der auf diesen Plattformen arbeitet, tatsächlich von Vim oder Emacs profitieren würde?


2
Wir arbeiten in meinem Shop in Eclipse, aber hier ist ein Typ, der Vim als Pimary-Editor und Eclipse nur für das Kompilieren und die Codeverwaltung verwendet.
Michael K

Antworten:


14

Da gibt es eine Mischung von Konzepten, was vielleicht nicht verwunderlich ist, da VS viele recht unterschiedliche Funktionen miteinander kombiniert. Ein Zitat (von dieser Seite) besagt, dass Emacs keine gute IDE ist, Unix eine gute IDE. Die Idee dabei ist, dass Sie sich in der Linux / Unix-Welt auf mehrere spezialisierte Tools verlassen, die gut zusammenspielen, und nicht auf ein einziges monolithisches Tool, das alles kann.

Jetzt programmiere ich hauptsächlich in C # und verwende VS, um das zu tun. Ich liebe Emacs auch sehr und benutze ihn für praktisch alles andere. Nun, wie Sie sagen, was Sie in Emacs tun können und was in Emacs besser zu tun ist, ist unterschiedlich. In vielen Fällen handelt es sich jedoch nicht um eine 1-zu-1-Zuordnung, und es gibt verschiedene Möglichkeiten, mit einem Texteditor und / oder anderen Tools dieselben Ziele zu erreichen.

Ich wollte ursprünglich jeden Ihrer Punkte ansprechen, aber die Antwort lief immer auf "Ja, Sie könnten" in irgendeiner Form hinaus. Normalerweise verlassen Sie sich entweder auf: 1) ein externes Tool (wie einen UI-Designer), um Code für Sie zu generieren, den Sie importieren; 2) Automatisierungsunterstützung aus dem Editor heraus (wie Elisp-Code in Emacs), um sich wiederholende Aufgaben zu automatisieren; oder 3) Sie würden sich darauf einstellen, textbasierte Tools anstelle visueller Tools zu verwenden (z. B. MSBuild zu verwenden und Ihre eigenen Projektdateien zu schreiben, anstatt sich auf die Einrichtung von VS zu verlassen).

In der Emacs-Welt gibt es kein Werkzeug, das alles kann. Sie haben viele Werkzeuge und die Möglichkeit, mehr Werkzeuge nach Bedarf zu erweitern. Ich weiß es noch nicht gut genug, um all das zu tun, also benutze ich VS und bin mit den Werkzeugen, die es mir gibt, zufrieden. VS ist eine wirklich mächtige, wirklich gute IDE. Wenn ich Java machen würde, müsste ich überlegen, welches Tool ich verwenden würde, da ich Eclipse oder IntelliJ nicht sehr gut kenne. Für jede andere Sprache gewinnt Emacs so ziemlich, weil es viel mehr für mich tun wird als jeder andere Texteditor oder jede halbfertige IDE, die diese Sprachen verwenden könnten. (Außer vielleicht Smalltalk, aber das ist ein einzigartiger Fall.)


6

Aber ist es realistisch zu sagen, dass jemand, der auf diesen Plattformen arbeitet, tatsächlich von Vim oder Emacs profitieren würde?

Lassen Sie mich Ihnen ein Beispiel geben: Ich arbeite auf einem System, das größtenteils (aber nicht zu 100%) mit C # codiert ist. Das System kann nicht aus Visual Studio erstellt werden - es ist viel zu komplex. Daher habe ich keine SLN-Datei (einige Leute haben versucht, eine zu pflegen, obwohl wir das Produkt nicht damit erstellt haben, aber das stellte sich als unmögliche Aufgabe heraus) und habe keine Vorteile durch Intellisense, Code-Browsing, Klassendiagramme usw. Das Tool, das für mich funktioniert, ist vim + ctags. Auch das ist nicht perfekt (ctags sind leicht zu verwechseln), aber viel besser als die Verwendung eines minderwertigen Code-Editors ohne Code-Browsing-Unterstützung.

Jetzt verstehe ich, dass die meisten .NET- oder Java-Entwickler nicht in der gleichen Position sind wie ich und wahrscheinlich besser mit einer IDE umgehen, wenn sie einen guten Code-Editor oder zumindest ein Add-In hat, das den Standard verbessert. Für Visual Studio gibt es Add-Ons wie VsVim, mit denen die Codierung noch angenehmer wird. Gleiches gilt für Eclipse AFAIK.


3

Ich bezweifle, dass es viele gibt, die VIM oder Emacs nicht mehr ausschließlich verwenden. Aber ich habe noch keinen Entwickler gefunden, der keinen Texteditor (sei es einer von diesen oder etwas anderem) in Form einer vollständigen IDE für einige Dinge, oft viele Dinge, verwendet.

Denken Sie daran, dass Ihre Arbeit weit mehr umfasst als das Schreiben von Java-, C # - oder C ++ - Code. Es gibt ANT-Skripte, Makefiles, XML-Dateien und Konfigurationsdateien aller Art. Und für viele kleine Aufgaben kann die Startzeit dieser IDE einfach zu lang sein. Es kann Minuten dauern, bis Eclipse gestartet wird. Das ist zu lang, um schnell etwas in einer einzelnen Quelle zu ändern oder nur etwas in einer bekannten Datei zu überprüfen. Das Laden der Datei in VIM dauert nur Sekunden.


1
obwohl auch notepad ++.
Raffael

Das habe ich noch nie benutzt, aber ich habe andere gesehen, die es benutzt haben (ich bin ein VIM-Versager :)).
28.

2

Ich finde, dass die Verwendung einer IDE und von vim (meinem persönlichen Lieblingseditor) keine sich gegenseitig ausschließenden Konzepte sind. Bei der .NET-Entwicklung richte ich normalerweise eine Tastenkombination ein, mit der die aktuelle Datei, an der ich arbeite, in der IDE in vim geöffnet und der Cursor an die gleiche Stelle gesetzt wird. Auf diese Weise drücke ich die Tastenkombination, wenn ich etwas tun möchte, was Vim großartig kann (z. B. Makros, vertikale Bearbeitung, erneutes Einrücken, Differenzieren usw.), und habe dann meinen Lieblingseditor im Griff Speichern Sie die Datei, beenden Sie sie und kehren Sie in die IDE zurück (Sie können sie so einrichten, dass die Datei automatisch neu geladen wird, wenn sie außerhalb der IDE in VS bearbeitet wurde). Auf diese Weise bekomme ich das Beste aus beiden Welten.

Früher verwendete ich Skriptsprachen, um Textdateien auf komplizierte Weise zu bearbeiten. Als ich die Leistungsfähigkeit der Verwendung von vim-Makros (und einiger anderer Funktionen) entdeckte, stellte ich fest, dass ich diese Art von Bearbeitungen / Manipulationen viel schneller und effizienter ausführen kann als mit einer Skriptsprache.

Es ist für mich weit verbreitet, einmalige Shell-Skripte zu generieren, um einige komplizierte Dinge mit vim zu erledigen, das von mir erstellte Shell-Skript auszuführen und es dann wegzuwerfen.

meine 2 Cent :)


Ja, ich spielte mit ein paar Plugins für VS herum, um mich entweder in Emacs zu stürzen, Emacs als "Code-Editor-Fenster" zu verwenden oder einfach die Emacs-Tastenkombinationen zu verwenden. Habe keine von denen geliebt. Ein Makro zum Öffnen von Emacs und zum Springen zur selben Cursorposition klingt allerdings nach einer ziemlich coolen Idee. Möglicherweise muss ich das versuchen. Meistens kopiere ich nur zwischen den beiden Elementen, wenn ich schwere Textmanipulationen durchführen muss.
CodexArcanum

0

Schauen Sie sich die Projekte OpenIDE und Continuous Tests an. Der erste Schwerpunkt liegt auf dem Hinzufügen von .NET-Projektunterstützung zu jedem Editor, einschließlich VIM und Emacs. Der andere ist ein kontinuierlicher Testläufer, der Rubys AutoTest / Pythons Sniffer / Autonose ähnelt. Es kann als VS-Plugin oder Standalone ausgeführt werden.

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.