Atom
Diese Seite beschreibt meine Erfahrungen mit dem Editor Atom, ein alternativer Editor zu Notepadqq und Notepad++.

Warum suchte ich einen weiteren Editor?

Ich bin grundsätzlich ein Freund der Nutzung von einfachen Editoren für das Schreiben von Webpages sowie von Java und C# Anwendungen, weil sie schnell starten, einfach zu bedienen sind, und auch mich als Programmierer anhalten, Code simpel zu halten.

Ich bin bis jetzt mit dem Setup gefahren, dass ich auf Windows Notepad++ verwendete und auf Linux Notepadqq.

Mit der vermehrten Nutzung von Eclipse im Beruf, wurde ich in meiner Überzeugung bestärkt, dass ich für meine privaten Projekte weiterhin auf Editoren setzen will. Allerdings könnte man die Editoren um einige Features erweitern, um sich das Leben einfacher zu machen.

Daher hatte ich die Idee Plugins für meine beiden Editoren zu schreiben. Ich fand für Notepad++ auch ein C# Projekt, das dafür geeignet war, aber egal, was ich auch tat, die Kompilierung endete damit, dass mir Notepad++ beim Start anzeigte, dass das Plugin nicht mit der Unicode Version von Notepad++ zusammenpasst.

Bei Notepadqq könnte man zwar mit Hilfe von Node.js und NPM ein Addon schreiben (Anleitung), aber die Unterstützung ist nur experimentell und man muss den Pfad zu Node.js und zu NPM im Menü unter Einstellungen - Erweiterungen im Notepadqq setzen.

Außerdem müsste ich zwei Addons mit der selben Funktionalität mit unterschiedlichen Technologien realisieren um auf Linux und auf Windows mit den Verbesserungen arbeiten zu können.

Welche zusätzlichen Features suchte ich für meinen Editor?

Unter anderem war ich an folgenden Verbesserungen interessiert:
  • Methoden sollen vorgeschlagen werden, wenn man nach einem Objektnamen einen Punkt gemacht hat. Bei Notepad++ werden nur Wörter vorgeschlagen, die bereits in der aktuellen Datei vorhanden sind.
  • Wenn man speichert, sollen unbenutzte java imports gelöscht werden.
  • Mit Strg und Mausklick auf einen Java-Klassennamen soll gleich die Klasse geöffnet werden, sofern sie im Projekt-Folder vorhanden ist.
  • Mit einem Shortcut soll eine Funktionssuche aufgehen. (Die Funktionssuche im Notepad++ funktioniert bei mir leider nicht. Außerdem ist das in einem Panel realisiert, dass ständig im Fenster hängt und somit Bildschirmplatz verbraucht.)
  • Shortcut zum Finden und Öffnen von Dateien innerhalb des Projekts, ohne dass man durch die Verzeichnisse navigieren muss.
  • Wenn man mit html oder xml arbeitet so könnten schließende Tags automatisch generiert werden, wenn man </ getippt hat.

Vergleich Atom zu Notepad++

Durch einen Tipp von einem Freund bin ich auf den Browser Atom gestoßen. In der folgenden Tabelle will ich für mich relevante Kriterien und Funktionalitäten zwischen Atom und Notepad++ vergleichen.

Kriterium / Funktion Atom Notepad++
Dateigröße des Windows Installers 148 MB 4,4 MB
Startgeschwindigkeit Etwas langsamer als Notepad++ aber viel flotter als Eclipse Wirklich schnell
Plattformen Linux, Windows (auch andere, für mich aber derzeit nicht relevant.) Nur Windows
Plugins Javascript- und CSS-like Plugin Generierung. (Aber noch nicht probiert!) Es gibt daher wahrscheinlich auch viel mehr Plugins, die man dazu installieren kann. C++ bzw. auch C#, Ada, Delphi, aber C# Template wegen 64 bit Fehler nie lokal zum Laufen gebracht.
Duplizieren von Zeilen und Wörtern Strg+Shift+d, konnte ich aber auf Strg+d umstellen.
(Siehe Umstellen von Shortcuts)
Strg+d
Methoden-Suche in Java-Dateien Strg+r öffnet eine Suche mit Overlay, allerdings lädt diese in letzter Zeit bei mir ziemlich lange und man ist dann mit der Strg+f Suche schneller. Es gibt eine einblendbare Methoden Übersicht, in der man auch suchen kann. Die ist aber dann fix anstatt einer Suche on Demand und nimmt somit Bildschirmplatz weg. Außerdem hat sie bei mir auf einem Rechner nicht funktioniert.
Tabulatoren durch 2 Leerzeichen ersetzen und Leerzeichen anzeigen Im Menü Packages - Settings View - Open gibt es einen Abschnitt Editor. Dort kann man folgende Einstellungen vorhnehmen.:
  • Show Invisibles anhaken
  • Tab Length -> Default 2
  • Tab Type: Auto + Soft Tabs anhaken
Im Menü Einstellungen - Optionen unter den Einstellungen für Sprache kann man die Tabulatoren Schrittweite und die automatische Ersetzung durch Leerzeichen setzen.
Die Anzeige der Leerzeichen und Tabulatoren kann im Menü Ansicht - Nichtdruckbare Zeichen - Leerzeichen und Tab anzeigen eingestellt werden.
Java Code Completion Sehr intelligent. Viel besser als in Notepad++, aber leider keine Methoden-Beschreibungen wie in Eclipse, wobei aber Eclipse hier auch manchmal sehr bockig sein kann. Nur vorhandene Wörter in File werden vorgeschlagen.
Suchen und Ersetzen Mit Strg+f kommt nur die Suche únd das Ersetzen in aktueller Datei.
Mit Strg+Shift+f wird die Suche im Projekt angezeigt. Dabei kann man auch File patterns einstellen, die man aber leider immer wieder neu eingeben muss.
Funktion für mich übersichtlicher, mächtiger und einfacher handhabbar, weil alle Funktionen in einem Dialog. Strg+f liefert Suchen + Ersetzen in Datei und in Verzeichnissen usw. Außerdem behält Notepad++ die Einstellungen über einen Restart und hat ein Dropdown, wo man die zuletzt verwendeten Settings wieder auswählen kann.
Alleine diese Funktion ist Grund genug Notepad++ nach wie vor zu installieren.
Zuletzt geöffnete Dateien Nur die zuletzt geschlossene Datei kann im Menü File wieder geöffnet werden. Der Shortcut Strg+Shift+t kann dafür verwendet werden.
(Lösung siehe Hilfreiche Add-Ons)
Im Datei-Menü gibt es eine Liste der letzten 10 zuletzt geschlossenen Dateien.
Automatisches Highlighting von gleichen Wörtern Markiert man ein Wort, passiert nichts. Erst mit Strg+f werden alle anderen Vorkommen auch markiert.
(Lösung siehe Hilfreiche Add-Ons)
Markiert man ein Wort, so werden gleich alle anderen Vorkommen dieses Wortes in der Datei hervorgehoben.
Integration in die Plattformen Auf Linux in Nautilus kann man Textdateien über das Kontextmenü mit Atom öffnen.
Damit das auch im Kontextmenü vom Windows File Explorer einen Eintrag für Atom gibt, muss man im Atom unter Packages -> Settings View -> Open im Reiter System Die Checkbox "Show in file context menus" auswählen.
Im Windows Explorer findet man im Kontextmenü einer Datei den Eintrag Öffnen in Notepad++.
Auf Linux kann man Notepad++ mit Wine installieren, aber diese Integration ist dabei nicht gegeben. (Außerdem ergeben sich dadurch einige Nachteile, die ich hier zusammengefasst habe.)
In Großbuchstaben oder Kleinbuchstaben konvertieren Hierzu habe ich noch nichts passendes gefunden. Markiert man ein Wort oder eine Text-Passage, so kann man mit dem Kontextmenü diese Passage gleich in Groß- oder in Kleinbuchstaben konvertieren.


Fazit

Notepad++ ist lightweight und sollte man sowieso auf Windows installieren, weil man viele einfache Tasks (Suchen, Ersetzen, CSV Text-Dateien anschauen, kleine Skripte editieren) damit am schnellsten erledigen kann.

Für das Schreiben von Code in Java und das Schreiben von Webseiten bin ich aber derzeit auf Atom umgestiegen.

Verbesserungen

Natürlich gibt es für mich auch für Atom einige Verbesserungsvorschläge, die man eventuell durch ein bereits existierendes Plugin oder durch ein selbst geschriebenes Plugin umsetzen könnte:
  • Behebung der Punkte, wo Notepad++ für mich besser abschneidet.
  • Wenn man speichert, sollen unbenutzte java imports gelöscht werden.
  • Mit Strg und Mausklick auf einen Java-Klassennamen soll gleich die Klasse geöffnet werden, sofern sie im Projekt-Folder vorhanden ist.
  • Shortcut zum Finden und Öffnen von Dateien innerhalb des Projekts, ohne dass man durch die Verzeichnisse navigieren muss.
  • Wenn man mit html oder xml arbeitet so könnten schließende Tags automatisch generiert werden, wenn man </ getippt hat.
Als nächstes werde ich mich auf der Suche nach Plugins machen, die vielleicht diese Funktionalitäten bereitstellen.

Umstellen von Shortcuts

Zum Verdoppeln von markierten Text bzw. von Zeilen verwendete ich in Notepad++ immer den Shortcut Strg+d. In Atom ist dafür aber der Shortcut Strg+Shift+D vorgesehen, was ich aber als mühseliger empfinde, weil ich dafür immer die zweite Hand von der Maus wegnehmen muss. Daher ist hier die Anleitung, wie ich den Shortcut umgestellt habe:

  • Zunächst die Keybindings anzeigen lassen:
    Menü Packages -> Settings View -> Open und dann in den Settings den Reiter Show Keybindings auswählen.
  • Nach dem gewünschten Shortcut suchen: Im Suchfeld "ctrl-shift-d" eingeben.
  • Mit dem Icon neben dem gesuchten Shortcut kann der gesamte Shortcut Eintrag in die Zwischenablage übernommen werden.
  • Die Keymap öffnen:
    Windows: Menüeintrag File -> Keymap
    Linux: Menüeintrag Edit -> Keymap
    (In dieser Datei stehen alle Shortcuts, die für den eigenen Gebrauch anders konfiguriert wurden.)
  • In diese Datei kann der Eintrag aus der Zwischenablage eingefügt und verändert werden. In meinem Fall wurde folgender Text eingefügt:

    'atom-workspace atom-text-editor:not([mini])':
    'ctrl-shift-D': 'editor:duplicate-lines'


    Und ich habe den Text auf folgenden Eintrag geändert:

    'atom-workspace atom-text-editor:not([mini])':
    'ctrl-d': 'editor:duplicate-lines'
  • Die Datei speichern, Atom einmal neu starten und der Shortcut sollte geändert sein.


Der Aufbau der Syntax eines solchen Shortcut-Eintrags ist wie folgt:
'<Bereich>': '<Shortcut>': '<Befehl>'
  • Der Bereich definiert, in welchen Fenstern, bzw. GUI-Elementen der Shortcut gültigkeit besitzt.
  • Der Shortcut ist die ausgeschriebene Tastenkombination, die für den Aufruf verwendet werden soll.
  • Der Befehl ist die interne Bezeichnung der Aktion, die durch den Shortcut ausgelöst werden soll.

Hilfreiche Add-Ons (Packages)

Die Funktionalität des Editors kann leicht mit Add-ons oder sogenannten Packages erweitert oder verändert werden. Dafür sind folgende Schritte notwendig:
  • Die Suche nach Packages öffnen:
    Menü Packages -> Settings View -> Open und dann in den Settings den Reiter Install auswählen.
  • Das gewünschte Package suchen und installieren.
Die folgenden Packages fand ich bis jetzt sehr hilfreich:

open-recent

Dieses Package fügt im File Menü von Atom einen Eintrag hinzu, in dem die zuletzt geschlossenen Dateien ersichtlich sind. In den Einstellungen kann man festlagen wie lange diese Liste werden kann.

Damit wird auch ein Vorteil, den Notepad++ gegenüber Atom hat, eingestellt.

highlight-selected

Wenn man ein Wort im Editor mit Doppelklick markiert, so werden sofort alle anderen Vorkommen des Worts auch mit einem Highlight-Rahmen versehen. Ich habe in den Optionen nocht das "Light Theme" angehakt, weil es für mich optisch ansprechender war.

Damit wird auch ein Vorteil, den Notepad++ gegenüber Atom hat, eingestellt.

autoclose-html

Nachdem im Editor ein HTML Tag geöffnet wurde, wird überprüft, ob es dazu schon einen schließenden Tag gibt. Wenn nicht, dann wird er gleich angelegt.

todo-show

Hebt Schlagwörter wie TODO oder FIXME farblich hervor.

Wenn man in den Settings zu diesem Package die Checkbox "Status bar indicator" anhakt, wird in der Statusleiste zusätzlich ein Icon in Form eines Zettels mit Haken angezeigt, das man anklicken kann, um nach allen TODOs zu suchen. Es erscheint dann ein Fenster, wo alle TODOs gelistet werden.

Allerdings habe ich ein Problem mit diesem Addon: Wenn ich ein <br/> eingebe, dann wird es automatisiert mit </ br/> geschlossen.

atom-change-case-menu

Fügt zum Kontext-Menü den Menüeintrag "Change Case Menu" dazu. Wenn man Text markiert hat, dann kann man den Text in GROSSBUCHSTABEN oder kleinbuchstaben konvertieren. Aber es stehen auch andere Versionen wie CamelCase oder snake_case zur Verfügung. In den Settings des Addons kann festgelegt werden, welche Cases gelistet werden sollen.

Damit wird auch ein Vorteil, den Notepad++ gegenüber Atom hat, eingestellt.