Cheat Sheets — Manual
Funktionsreferenz der Cheat Sheets: Sheet-Auswahl, Wortsuche im Sheet und über alle Sheets, Abschnitts-Links, Copy-Buttons, Datenstruktur und Grenzen.
Zurück zur Übersicht: Cheat Sheets · Tool live öffnen: www.jpkc.com/tools/cheatsheet/
Dieses Manual beschreibt die Cheat Sheets vollständig: wie du ein Sheet auswählst, wie die Suche im Sheet und über alle Sheets funktioniert, was jeder Befehlseintrag enthält, wie das Tool intern aufgebaut ist und wo seine Grenzen liegen. Die Oberfläche des Tools ist auf Englisch — die Bedienelemente werden hier deshalb in ihrer englischen Original-Schreibweise genannt (mit deutscher Erläuterung), damit du dich im echten Interface zurechtfindest.
Aufbau der Oberfläche
Oben sitzt eine Steuerungs-Karte mit dem Titel „Cheat Sheets". Ab einer Fensterbreite von 768 Pixeln bleibt sie beim Scrollen am oberen Rand kleben (sticky); auf schmaleren Bildschirmen übernimmt das die mobile Mini-Leiste. Die Karte enthält drei Bedienelemente:
Cheat Sheet— das Auswahl-Dropdown für eines der 220 Sheets.Section— ein Sprung-Dropdown zu den Abschnitten des aktuellen Sheets.Search— das Suchfeld zum Filtern der Befehle, daneben der×-Button und ein Zähler. Darunter sitzen der SchalterSearch all cheat sheetsund der HinweisAll words must match · "exact phrase".
Darunter folgen — nur bei aktiver Suche über alle Sheets — die Ergebnis-Karte Results in all cheat sheets, dann eine Beschreibungs-Karte (eine Zeile Kontext zum gewählten Sheet) und der Inhaltsbereich, in dem die Abschnitte und Befehle als Karten gerendert werden. Beim Aufruf ohne weitere Angabe lädt das Tool das Git-Sheet als Standard.
Datenstruktur eines Sheets
Jedes Sheet ist eine eigene JSON-Datei mit einem einfachen, durchgängigen Aufbau. Wer eigene Sheets verstehen oder nachbauen will, braucht nur diese vier Ebenen:
{
"id": "git",
"title": "Git",
"description": "Distributed version control system for tracking changes in source code.",
"sections": [
{
"title": "Configuration",
"commands": [
{
"command": "git config --global user.name \"<name>\"",
"description": "Set your global username for all repositories.",
"example": "git config --global user.name \"John Doe\""
}
]
}
]
}id— der Slug des Sheets, zugleich Dateiname (data/git.json) und Hash in der URL (#git).titleunddescription— Anzeigename (identisch mit der Beschriftung im Auswahl-Menü) und die eine Kontextzeile in der Beschreibungs-Karte.sections[]— die thematischen Abschnitte, jeder mittitleund einer Listecommands. Aus dem Abschnittstitel entsteht der Anker für Deep-Links.commands[]— pro Eintrag eincommand(die Syntax, oft mit Platzhaltern wie<name>), einedescriptionund ein optionalesexamplemit einem realen Aufruf.
Aus dieser Struktur ergibt sich alles Sichtbare: die Abschnittskarten, das Section-Dropdown, die einzelnen Befehlszeilen und die Treffer der Suche. Die 220 Sheets enthalten zusammen rund 9.150 Befehle.
Funktionen im Detail
Cheat-Sheet-Auswahl
Das Cheat Sheet-Dropdown listet alle 220 Sheets, gruppiert nach den 21 Kategorien (z. B. Shells, Development, Networking). Oben im geöffneten Dropdown sitzt ein eigenes Suchfeld mit dem Platzhalter Search cheat sheets...: Es filtert die Sheet-Liste live nach der Menü-Beschriftung und der id des Sheets. Mehrere Wörter grenzen weiter ein — jedes muss vorkommen; Kategorie-Überschriften ohne Treffer werden ausgeblendet.
Die Bedienung ist voll tastaturfähig: Pfeil hoch/runter wandert durch die Treffer (am Ende geht es oben weiter), Enter lädt das markierte Sheet — ist keins markiert, den ersten Treffer —, Escape schließt das Dropdown. Ein Klick auf einen Eintrag lädt das Sheet ebenso, leert die Menü-Suche und springt an den Seitenanfang. Für Screenreader meldet eine unsichtbare Live-Region die Zahl der passenden Sheets (N cheat sheets available), und der jeweils markierte Eintrag wird dem Suchfeld per aria-activedescendant zugeordnet.
Wichtig zur Abgrenzung: Diese Dropdown-Suche durchsucht nur die Sheet-Namen, nicht deren Befehlsinhalte. Befehle findest du mit der Befehls-Suche im geladenen Sheet oder mit der Suche über alle Sheets.
Befehls-Suche
Das Search-Feld (Platzhalter Filter commands… (press /)) filtert die Befehle des aktuell geladenen Sheets. Die Suche reagiert nach einer kurzen Pause beim Tippen (Debounce 150 ms) und folgt drei Regeln:
- Alle Wörter müssen vorkommen. Die Eingabe wird an Leerzeichen in Wörter zerlegt; ein Befehl gilt nur dann als Treffer, wenn jedes Wort irgendwo in Befehl, Beschreibung oder Beispiel steckt. Die Reihenfolge ist egal, Groß- und Kleinschreibung auch. Jedes Wort wird als Teilzeichenfolge gesucht —
revfindet also auchrevert. - Phrasen in Anführungszeichen bleiben zusammen:
"dry run"trifft nur Einträge, in denen genau diese Wortfolge steht, währenddry runohne Anführungszeichen auch--dry-runfindet. - Treffer werden markiert — in der Befehlszeile und in der Beschreibung, nicht im syntaxhervorgehobenen Beispiel.
Eine ODER-Verknüpfung, reguläre Ausdrücke oder eine Fehlertoleranz gibt es nicht. Abschnitte, in denen kein Befehl mehr passt, werden komplett ausgeblendet. Passt im ganzen Sheet nichts, erscheint die Karte No commands in this cheat sheet match your search. mit dem Button Search all cheat sheets, der die Suche mit demselben Begriff auf alle Sheets ausweitet.
Rechts neben dem Feld zeigt ein Zähler den Stand: ungefiltert N commands, gefiltert X / N commands (auf schmalen Bildschirmen als Badge unter dem Feld). Der ×-Button (Clear search (Esc)) leert die Suche und setzt den Cursor zurück ins Feld. Zwei Tastenkürzel sparen Wege:
/springt von überall auf der Seite ins Suchfeld und markiert dessen Inhalt — außer du tippst gerade in einem anderen Eingabefeld.- Esc im Suchfeld leert eine laufende Suche.
Beim Wechsel auf ein anderes Sheet wird die Befehls-Suche geleert — es sei denn, die Suche über alle Sheets ist eingeschaltet.
Suche über alle Sheets
Der Schalter Search all cheat sheets unter dem Suchfeld weitet die Suche auf die Befehle aller 220 Sheets aus. Es gelten dieselben Regeln wie bei der Befehls-Suche (alle Wörter, Phrasen, Markierung). Über der Beschreibungs-Karte erscheint dann die Karte Results in all cheat sheets:
- Leeres Suchfeld: Der Status lautet
Type to search all 220 cheat sheets. - Erste Suche: Das Tool lädt alle Sheet-Dateien nach, die noch nicht im Speicher liegen — sechs gleichzeitig, mit Fortschritt im Status (
Loading cheat sheets… x / y). Das sind in komprimierter Form rund 400 KB. Danach bleiben die Daten für die Dauer des Seitenbesuchs im Speicher, jede weitere Suche ist sofort da. Lassen sich einzelne Sheets nicht laden, warnt ein Hinweis, dass die Ergebnisse unvollständig sein können. - Ergebnisliste: Zuerst kommen die Treffer, bei denen alle Suchwörter schon in der Befehlszeile stehen, danach die übrigen, die erst über Beschreibung oder Beispiel vollständig passen. Innerhalb jedes der beiden Blöcke gilt die Reihenfolge des Auswahl-Menüs, und eine neue Gruppe mit Sheet-Überschrift beginnt bei jedem Wechsel des Sheets. Hat ein Sheet beide Arten von Treffern, taucht es deshalb zweimal auf. Jede Zeile zeigt den Befehl mit Markierung und eigenem Kopier-Button, darunter die Beschreibung und den Namen des Abschnitts.
- Umfang: Der Status nennt die Gesamtzahl, etwa
11 commands in 5 sheets. Angezeigt werden höchstens 150 Treffer; bei mehr ergänzt der Status— showing the first 150, refine your search. Ohne Treffer meldet erNo command in any cheat sheet matches.
Aus der Ergebnisliste springst du direkt ins Sheet: Ein Klick auf den Sheet-Namen öffnet das Sheet und übernimmt den Suchbegriff als Filter; ein Klick auf den Abschnittsnamen öffnet das Sheet genau an diesem Abschnitt, dann ohne Filter. In beiden Fällen schaltet sich die Suche über alle Sheets aus, und die Ergebnis-Karte verschwindet.
Solange der Schalter an ist, filtert dieselbe Eingabe auch das darunter angezeigte Sheet mit; die Karte „keine Treffer in diesem Sheet" bleibt dabei ausgeblendet.
Abschnitts-Navigation
Das Section-Dropdown wird mit den Abschnitten des geladenen Sheets gefüllt (oben steht -- All sections (N) -- mit der Gesamtzahl). Wählst du einen Abschnitt, scrollt die Seite weich dorthin — der Versatz durch die sticky Steuerungs-Karte bzw. die mobile Mini-Leiste wird dabei eingerechnet, sodass die Abschnittsüberschrift nicht verdeckt wird. Zugleich schreibt das Tool den Abschnitt in die URL (#git/branching), ohne einen neuen History-Eintrag anzulegen.
Anzeige der Befehle
Jeder Abschnitt erscheint als Karte mit Überschrift; rechts im Kopf sitzt ein Link-Button, der die URL dieses Abschnitts kopiert (siehe Deep-Links). Darin steht pro Eintrag:
- der Befehl als hervorgehobener
code-Text, - die Beschreibung darunter,
- optional ein Beispiel in einem eigenen, syntaxhervorgehobenen Block.
Platzhalter wie <file>, <commit> oder <commit message> sind in der Befehlszeile orange und kursiv abgesetzt, damit du siehst, was du vor dem Ausführen ersetzen musst. Das gilt nur für Shell-Befehle: In Apache- oder nginx-Konfiguration ist <VirtualHost …> Syntax, kein Platzhalter, und bleibt deshalb unmarkiert. Die Beispiel-Blöcke enthalten in der Regel schon eingesetzte Werte.
Die Beispiele werden über highlight.js eingefärbt (Theme github-dark). Die Sprache wählt das Tool je Sheet bzw. je Snippet:
| Sheet | Einfärbung |
|---|---|
.htaccess |
Apache-Konfiguration |
nginx.conf |
nginx-Konfiguration |
| PowerShell | PowerShell |
| HTTP Status Codes, MIME Types, Regex Reference | reiner Text, ohne Farben |
| Apache, NGINX, Certbot | je Snippet: Konfiguration (Apache bzw. nginx), wenn es danach aussieht, sonst Shell |
| alle übrigen Sheets | Shell (Bash) |
In den übrigen Sheets färbt das Tool auch Beispiele, die eigentlich YAML, SQL oder JSON sind, als Shell — dort ist die Einfärbung nur eine Annäherung.
Kopieren
Sowohl die Befehlszeile (Copy command) als auch jedes Beispiel (Copy example) haben einen eigenen Clipboard-Button; auch jede Zeile der Ergebnisliste über alle Sheets hat einen. Ein Klick kopiert den exakten Text in die Zwischenablage; eine kurze Rückmeldung (Toast) bestätigt den Kopiervorgang. Kopiert wird immer der Originaltext inklusive Platzhaltern wie <name> — die musst du nach dem Einfügen selbst ersetzen. Die Markierung der Suchtreffer wird nicht mitkopiert.
Deep-Links per URL-Hash
Das aktive Sheet steht im URL-Hash (https://www.jpkc.com/tools/cheatsheet/#docker), ein Abschnitt hängt mit Schrägstrich dahinter (#git/undoing-changes). Den Abschnitts-Anker bildet das Tool aus dem Titel: Kleinbuchstaben, & wird zu and, alle anderen Sonderzeichen und Leerzeichen zu Bindestrichen — aus „Staging & Commits" wird staging-and-commits. Kommt ein Titel in einem Sheet doppelt vor, erhält der zweite den Zusatz -2.
- Sheet wechseln (über das Menü oder die Ergebnisliste) legt einen neuen History-Eintrag an. Die Zurück-Taste des Browsers bringt dich deshalb zum vorher geöffneten Sheet.
- Abschnitt wählen (über das
Section-Dropdown oder den Link-Button) ersetzt nur den aktuellen Eintrag, ohne die History zu füllen. - Der Link-Button im Abschnittskopf schreibt die Abschnitts-URL in die Adresszeile und kopiert sie zugleich (
Link to section copied!).
Rufst du eine solche URL direkt auf, lädt das passende Sheet sofort und scrollt zum Abschnitt. Ist der Sheet-Teil leer oder unbekannt, fällt das Tool auf Git zurück; ein unbekannter Abschnitt wird ignoriert, das Sheet lädt dann ohne Sprung. Damit lässt sich jedes Sheet und jeder Abschnitt teilen und bookmarken.
Mobile Mini-Leiste
Unter 768 Pixeln Breite scrollt die Steuerungs-Karte mit der Seite weg. Sobald sie aus dem Bild ist, blendet sich oben eine schmale, feste Mini-Leiste ein:
- Sheet-Button mit dem Namen des aktuellen Sheets — springt nach oben und öffnet das Auswahl-Menü,
- Abschnitts-Auswahl (
Jump to section) — springt direkt zum gewählten Abschnitt, - Lupe (
Search) — springt nach oben und setzt den Cursor ins Suchfeld.
Architektur
Die Seite liefert das vollständige, nach Kategorien gruppierte Auswahl-Menü statisch aus. Die Sheet-Inhalte selbst kommen erst on demand: Beim Wechsel holt das JavaScript die JSON-Datei des Sheets per fetch (data/<id>.json), legt sie in einem In-Memory-Cache ab (ein zweiter Aufruf desselben Sheets lädt also nicht erneut) und rendert Abschnitte und Befehle direkt im Browser — ausschließlich als Text, nie als HTML aus den Daten. Die Suche über alle Sheets nutzt denselben Cache: Sie lädt die fehlenden Dateien nach und durchsucht sie lokal. Während des Ladens zeigt der Inhaltsbereich Loading…; scheitert ein Abruf, meldet ein Fehler-Toast Failed to load cheat sheet: ….
Es gibt keine serverseitige Logik, keine API, kein Rate-Limit und keinen Account. Das Tool speichert nichts — weder Suchbegriffe noch das zuletzt geöffnete Sheet; der Cache lebt nur, solange die Seite offen ist. Den Zustand trägt allein die URL.
Grenzen
- Keine Fehlertoleranz, kein ODER. Die Suche verlangt alle Wörter (als Teilzeichenfolge); Tippfehler, Synonyme oder Alternativen findet sie nicht. Sucht ein Begriff zu viel, hilft eine Phrase in Anführungszeichen.
- Höchstens 150 Treffer über alle Sheets. Allgemeine Begriffe liefern mehr; die Gesamtzahl steht im Status, die Liste zeigt nur die ersten 150. Dann schränkst du mit einem weiteren Wort ein.
- Erste Suche über alle Sheets lädt nach. Beim ersten Mal kommen alle noch fehlenden Sheet-Dateien über die Leitung; mit langsamer Verbindung dauert das einen Moment.
- Ein Sheet zur Zeit. Es wird immer genau ein Sheet vollständig angezeigt; die Suche über alle Sheets zeigt Treffer aus vielen, aber nicht mehrere Sheets nebeneinander.
- Nur Nachschlagen, kein Ausführen. Das Tool ist eine reine Referenz. Es führt nichts aus und prüft nichts — die einzige Ausgabe ist der kopierte Text.
- Platzhalter bleiben Platzhalter. Kopierte Befehle enthalten Platzhalter wie
<url>oder<name>wörtlich; sie werden nicht automatisch ausgefüllt. - Highlighting nur für die erkannten Sprachen. Eigene Grammatiken gibt es für Apache, nginx und PowerShell; HTTP Status Codes, MIME Types und Regex Reference bleiben ungefärbter reiner Text, alles andere wird als Shell eingefärbt, auch YAML-, SQL- oder JSON-Beispiele.
Für den Einstieg, die Zielgruppen und das große Bild siehe die Übersichtsseite. Konkrete Abläufe zeigen die Beispiele, Kniffe die Tipps & Tricks. Ausprobieren kannst du alles direkt im Tool.