×

How to: Wie man mit Folding und Syntaxhighlighting Notizen in Notepad++ übersichtlicher machen kann

Papier hat Nachteile

Bis vor einigen Jahren hielt ich Notizen in einem Notizbuch fest. In erster Linie handelte es sich dabei um ToDos aus Besprechungen, die ich nach Erledigung einfach durchstreichen konnte.

Aufgaben wurden jedoch komplexer, Besprechungen zahlreicher. Sich die Option offenzuhalten, eine auf Papier zunächst grob erfasste Aufgabe mit Unterpunkten zu versehen, verschwendet Platz, wenn dafür reichlich Lücken zwischen den Einträgen gelassen werden müssen. Oder es wird unübersichtlich, weil mit Verweisen auf andere Seiten gearbeitet werden muss.

Mit zunehmender Menge an Notizen wurde es immer schwieriger, rasch einen bestimmten Eintrag zu finden – denn irgendwo in einem Unterpunkt versteckte sich oft die eine oder andere während dessen Bearbeitung gefundene Erkenntnis, von der ich wusste, dass sie existiert, aber nicht wo genau.

Auch ein Backup des Büchleins fiel eher in die Kategorie „nope“.

Daraus entstand der Wunsch, meine Notizen elektronisch festzuhalten. Ich mag Strg+f und benutze den Shortcut auch dazu, um auf unübersichtlichen Websites das Suchfeld zu finden.
Ganz klarer Fall: Meine Notizen mussten digitalisiert werden.

Meine Anforderungen

  • Die Software soll zu den Windows-Bordmitteln gehören oder ich verwende alternativ eine Software, die ich sowieso nutze.
  • Es soll sich um eine kostenlose Software handeln, idealerweise Open Source.
  • Außerdem soll es sich möglichst um ein von Menschen nur mit einem Texteditor lesbares Format handeln, da dann auch ein Problem mit der Software nicht den Zugriff auf meine Notizen verhindert.

Optionen

Gemäß den Anforderungen hatte ich folgende Ideen:

  • OneNote hatte ich eine Weile lang ausprobiert. Die Software ist mächtig, allerdings finde ich sie auch unübersichtlich.
  • askSam war kostenpflichtig und wird inzwischen nicht mehr weiterentwickelt.
  • Mindmaps fand ich nützlich. Sie eignen sich aber nur für die Darstellung struktureller Zusammenhänge und nicht dafür, schnell mal in einer Telko mitzuschreiben.
  • Textdateien stellen keine Links innerhalb der Datei bereit. Die würden es aber sowieso schwermachen, mit einem Klartextformat zu arbeiten.

Deshalb fiel meine Wahl trotzdem auf Textdateien.

Nach heutigem Wissensstand gibt es auch aktuelle Tools, die eine Erfassung als Text und spätere Abfragen in einer dafür geeigneten Sprache ermöglichen, z.B. Logseq. Da ich mich nun aber an die Arbeit mit Textdateien gewöhnt habe, ist ein Umstieg auf solch ein Tool momentan kein Thema für mich.

Allerdings verbreiten sich auch leichtgewichtigere Optionen wie Markdown und AsciiDoc, und kleinere Dokumente zu einem spezifischen Thema verfasse ich inzwischen direkt im Markdown-Format. Für schon bestehende größere Textdokumente erscheint mir der Aufwand zu groß, sie zu konvertieren.

Notepad++ kennt Syntaxhighlighting und Folding

Der kostenlose Texteditor Notepad++ besitzt Features, die die Programmierung unterstützen. Diese können auch etwas zweckentfremdet werden, um die Übersicht innerhalb gewöhnlicher Textdokumente zu verbessern.

Syntaxhighlighting

Eine Möglichkeit ist es, ein Syntaxhighlighting zu nutzen. Dieses Feature wird in erster Linie dafür genutzt, Schlüsselworte von Programmiersprachen hervorzuheben, um bei der Arbeit mit Programmquelltexten potentielle Fehler frühzeitig zu erkennen.
Ich verwende es auch in journalartigen Dateien für das Datum sowie für Prioritäten und andere Kategorien von Meta-Informationen. Da Notepad++ neben der Auswahl unter zahlreichen Programmiersprachen auch die Möglichkeit anbietet, selbst welche zu definieren, habe ich mir einfach eine namens „Notizen“ erstellt und sie an die Dateiendung „txt“ gebunden. So werden alle Textdateien automatisch mit dem Notizen-Highlighting geöffnet.

Die Möglichkeit, eine eigene Sprache zu definieren, findet sich im Menü „Sprache“ im Untermenü „Benutzerdefinierte Sprache“. Im Tab „Schlüsselwörter“ können Schlüsselwörter in bis zu 8 Kategorien einsortiert werden, die jeweils einen Stil zugeordnet bekommen. „Präfixmodus“ bedeutet dabei, dass eine Zeichenkette auch dann der Kategorie entsprechend formatiert wird, wenn nur ihr Anfang mit einem Schlüsselwort übereinstimmt.

Exemplarisch die Formatierung für das aktuelle Jahr:

Dass hier einfach nur die Jahreszahl gesucht wird und kein Plausibilitätscheck für die Monatslänge stattfindet, ist der Grund dafür, dass der 30. Februar im Beispiel-Screenshot als Datum formatiert wird.

Bei Bedarf kann auch eine Uhrzeit hinzugefügt und dann mitformatiert werden, z.B. so: 2024-02-30_01-23-45

Das jeweils aktuelle Jahr trage ich in eine andere Kategorie ein, als die Jahre davor und danach, die eine wesentlich auffälligere Formatierung erhalten. Das erfordert nach jedem Jahreswechsel eine kurze Änderung in den Schlüsselworten, stellt aber besonders im Januar sicher, dass ich nicht versehentlich die viel häufiger getippte alte Jahreszahl schreibe.

Folding

Notepad++ ermöglicht auch Folding, d.h. das Einklappen von Textabschnitten, die momentan nicht von Interesse sind. Dazu muss festgelegt werden, wie ein einklappbarer Block erkannt wird.

Auch diese Festlegung findet im Dialog für die Sprachdefinition statt. Für das Folding ist das Tab „Textblöcke & Voreinstellung“ relevant. Hier habe ich im Panel „Textblöcke im Code 1“ als Anfang die beiden Zeichen {* eingegeben und als Ende die Zeichen *}. Das sind absichtlich ungewöhnliche Zeichenkombinationen, die in keiner von mir genutzten Programmiersprache eine Bedeutung haben.

Einführung eigener Standards

Informationen, die während der Bearbeitung einer Aufgabe anfallen und nur dafür relevant sind, werden meistens nicht speziell gekennzeichnet.
Ich habe mir aber angewöhnt, für potentiell auch später noch wichtige Einträge ein festes Format für die Metainformationen zu verwenden. Darin wird je nach Bedarf zusätzlich vermerkt, ob für eine Aufgabe noch etwas zu tun und wie eilig das gegebenenfalls ist, von wem eine Information stammt oder an wen sie gerichtet war, und wann das stattfand.

Mittlerweile haben sich bei mir einige Standards etabliert:

  • Namen externer Kollegen schreibe ich als VornameNachname, damit kein Leerzeichen in den Metainfos eines Eintrages vorkommt. Sinn der Sache ist, dass das Syntaxhighlighting den ganzen Namen erfasst. Das funktioniert bei den Schlüsselwörtern, für die der Präfixmodus eingeschaltet ist. (Dass das beim Wort WARN nicht der Fall ist, ist Absicht, weil ich es sinnvoller finde, wenn dieses Wort immer alleine steht.)
  • Daten werden stets im hierarchischen Format JJJJ-MM-TT geschrieben. So lässt sich erforderlichenfalls problemlos danach sortieren.
    Falls es neben dem Datum auch auf die Uhrzeit ankommt, enthält sie auch selbst den Bindestrich als Trenner, wird aber mit Unterstrich vom Datum getrennt: JJJJ-MM-TT_hh-mm-ss. Die Sekunden können dabei weggelassen werden, falls auch Minuten genau genug sind. Der Unterstrich dient der besseren Lesbarkeit, damit die Augen zwischen lauter mit Bindestrich getrennten Ziffernpaaren nicht die Orientierung verlieren. Dass ich keinen Doppelpunkt in der Uhrzeit verwende, liegt daran, dass ich die so erzeugten Zeitstempel ohne jede Änderung als Bestandteil von Dateinamen nutzen können will – unter Windows ist der Doppelpunkt als Zeichen in Dateinamen verboten.
  • Deltas zwischen Uhrzeiten (z.B. bei der Messung der Laufzeit eines Prozesses), die über eine Minute hinausgehen, schreibe ich als hh:mm:ss und zwar auch dann, wenn es um deutlich weniger als eine Stunde geht. Das erspart mir beim Überfliegen von Notizen Unsicherheiten wie bei 10:30 – geht es um zehneinhalb Minuten oder Stunden? Bei 00:10:30 bzw. 10:30:00 wäre der Fall jeweils klar.

Der zweite Zweck des einheitlichen Formates neben der schöneren Hervorhebung des gesamten Metainfo-Strings ist, dass ich gezielt Einträge suchen kann. Nehmen wir diese Beispieldatei:

INFO<MonaMuster'2022-02-01 Information zu Projekt A
INFO<Moritz'2023-02-01 Information zu Projekt B
WIP<Max'2023-05-01 Aufgabe für Projekt C
TODO<Moritz'2024-03-30 Aufgabe für Projekt D

Mit der Regex INFO.*’….-02 bekomme ich im Suchfenster alle INFO-Einträge aufgelistet, die in einem Februar geschrieben wurden, und mit <Moritz’2023 alles, was ich 2023 von Moritz bekommen habe.

Beispiel für Syntaxhighlighting und Folding

Außer dem Syntaxhighlighting werden im Titelbild-Screenshot verschiedene Zustände faltbarer Textblöcke demonstriert:

  • Die erste Aufgabe ist erledigt (ERL) und deshalb eingeklappt.
  • Die zweite Aufgabe ist noch „work in progress“ und deshalb ausgeklappt.
  • Die dritte Aufgabe ist ebenfalls ausgeklappt. Der Textcursor steht am Ende der einzigen Zeile und damit innerhalb des Blocks, wodurch die dünne Linie, die die Blockmarker verbindet, rot gefärbt wird. Auch geschachtelte Foldings sind möglich, was hier aber nicht dargestellt wird; die rote Linie würde dann immer den jeweils innersten Block markieren, in dem sich der Cursor befindet.

Nutzung einer Makrotastatur

Ich habe den von mir ausgewählten Folding-Kürzeln, sowie einem leeren Block davon, Tasten auf meiner Makrotastatur spendiert. Dort findet sich auch das {code}-Tag, weil ich innerhalb vieler solcher Blöcke Codeschnipsel und andere Informationen sammle, die irgendwann in Jira oder Confluence landen sollen. So muss ich am Ende die entsprechenden Blöcke nur noch 1:1 rüber kopieren.

Kleine Textschnipsel mit Folgen von (Sonder-)Zeichen wie in den oben erwähnten Tags sind ein möglicher Anwendungszweck einer Makrotastatur, durch den potentielle Tippfehler vermieden werden. Auch die anderen Tags können bei Bedarf auf eigene Tasten gelegt werden, was ich bisher noch nicht als notwendig angesehen habe.
Weitere Anwendungszwecke einer Makrotastatur werden in meinem nächsten Blogbeitrag stärker beleuchtet.


How to: Wie man am Laptop fehlende Tasten mit Makrotastatur oder AutoHotkey nachbilden kann

How to: Pixelgenaue Steuerung des Mauscursors mit Makrotastatur und AutoHotkey

Von B. Kempf | 16.05.2024
B. Kempf

Softwareentwicklung