Vim, Emacs oder IDE (IntelliJ)?
Tagged as DE
Written on
In welchem Editor kann ich den besten Code schreiben? Vim wie bisher, doch vielleicht besser Emacs oder gar wie meine Kollegen mit einer IDE? Die letzten Wochen habe ich getestet: zwei Wochen nur Emacs und zwei Wochen nur IntelliJ als IDE
Emacs – der andere Texteditor
Mir gefällt, dass er mit Lisp erweitern wird. Ich mag Lisp. Größter Unterschied zu Vim: Keine Unterscheidung zwischen Eingabemodus und Befehlsmodus. Dadurch werden alle Befehle über irgendwelche Tastenkombinationen aufgerufen. Spötter übersetzen Emacs deswegen als Escape-Meta-Alt-Control-Shift. Ja, etwas stört mich das auch, insbesondere wenn ich gerade an einem Mac sitze und viele der Tastenkombinationen erstmal vom Betriebssystem abgefangen werden. Andererseits kenne ich das Problem in VIM, dass ich in den Einfügemodus wechseln woll, obwohl ich schon darin bin. Das führt dann zu so manchem überflüssigen „a“, „i“ oder „A“ im Text.
Beste positive Eigenschaft für mich: ich habe begonnen es zu lieben mit Buffern und Fenstern zu arbeiten. Per Tastenkürzel kann ich in kürzester Zeit die Dateien wechseln, die ich bearbeite und an mehreren Dateien gleichzeitig arbeiten. Bei VIM auch möglich, aber bei Emacs habe ich es wirklich gemacht: der Editor blieb gestartet und wurde nur mit Strg-Z in den Hintergrund gelegt, wenn ich auf der Shell zu tun hatte. Danach „fg“ auf der Shell eingetippt und im Editor war alles wie davor.
Am wenigsten gefiel mir im Vergleich zu Vim hat das Navigieren im Text. Wenn ich per regulärem Ausdruck in VIM etwas suche, so kann ich die Suche jederzeit mit „n“ (vorwärts weitersuchen) oder „N“ (rückwärts weitersuchen) fortsetzen. Das nutze ich beispielsweise gerne, wenn ich Kleinkram ändere. Ich kann nach jeder Änderung mit „n“ zur nächsten Stelle springen. In Emacs dagegen kann ich nur solange weitersuchen wie ich nichts editiere. Danach muss ich erneut die Suche starten.
IDE – IntelliJ
Wie habe ich zu einem Kollegen sagt: es fühlt sich an, wie wenn es nur ein etwas besserer Texteditor ist. – stutze und denke mir: müsste ich das nicht eher von Vim und Emacs behaupten?
Was ich damit meine ist aber: ich habe nicht den Eindruck, dass mein Editor wirklich Struktur im Text erkennt. Ich kann nur Zeichen einfügen und den Cursor bewegen. Alle Funktionen, die verstehen was ein Wort, ein Satz oder ein Absatz in meinem Programm ist wirken nur wie Makros auf höherer Ebene.
Was mich stört: ich habe mich wirklich bemüht alles mit der Tastatur und ohne Maus zu machen, dann der stetige Griff zur Maus nervt mich. Aber es klappt einfach nicht. Zwar scheint es immer auch ein Tastenkürzel zu geben, aber anstatt es zu suchen greift man eben doch zur Maus. Was ich zum Beispiel nicht gefunden habe:
- Wie öffne ich die Kommandozeile per Tastenkürzel oder
- wie starte ich einzelne Maven-Lebenszyklen per Tastenkürzel?
Wenn ich mir meine Kollegen anschaue ist das auch nichts was sich mit der Zeit ändert: ich sehe (und höre im ganzen Büro!) wie oft die Maus im Spiel ist. Meine ideale Entwicklungsumgebung lässt sich gar nicht mit Maus bedienen und zwingt mich zu jedem Tastenkürzel: steile Lernkurve aber danach ein geiles Werkzeug.
Sehe ich einfach nur alles negativ weil es anders als das gewohnte ist? Nein! Es gibt auch Dinge die mir in IntelliJ gefallen haben. Einige Refactorings machen mit IDE mehr Spaß:
Beispielsweise ist es toll einen Codeabschnitt zu markieren und per Tastenkürzel in eine eigene Methode auszulagern. IntelliJ weißt mich auch gleich darauf hin, wenn es ähnliche Codestellen gibt und fragt, ob es diese durch einen Methodenaufruf ersetzen soll. Super! Dennoch lege ich hinterher Hand an und muss die Methode nochmals an die Stelle in der Klasse verschieben wo sie hingehört. IntelliJ fügt sie einfach immer unter der Methode ein von der ich extrahiere.
Prima ist auch, wieviel schneller die Unit-Tests laufen als ein Aufruf von „mvn test“. Das erhöht die Geschwindigkeit eines rot-grün-refactor-Zykluses erheblich.
Das große ABER für mich: schon nach zwei Wochen hatte ich den Eindruck, dass ich schlechteren Code schreibe:
- Die Sortierung meiner Methoden in der Java-Klasse danach ob es sich um ein grobes Konzept oder einen Detailschritt handelt hatte nachgelassen.
- Das Gefühlt dafür welche Klasse in welchem Package liegt mit der dadurch vorhandenen Modularisierung des Codes war mir weniger präsent und ich habe auch meine Klassen weniger gut zugeordnet.
Fazit (für mich)
Code werde ich weiterhin im Texteditor schreiben. Dabei greife ich die letzten Tage mal zu Vim und mal zu Emacs. Ich fühle mich in beiden wohl.
IntelliJ ist nicht schlecht, aber nicht das Werkzeug meiner Wahl zum programmieren. Aber ich kann mir vorstellen, in Zukunft bei größeren Refactorings auf dieses Werkzeug zurückzugreifen.