Text Expander für Git, PRs und KI-Prompts einsetzen
Espanso-Snippets für Git, PRs und KI-Prompts: Nutze Shell, Zwischenablage und Cursor-Hinweise für kontextbezogene Texterweiterungen.
Ein Text Expander wandelt einen kurzen Trigger wie :cm in einen vollständigen Textblock um – überall, wo Sie tippen: Commit-Nachrichten, PR-Beschreibungen, LLM-Prompts – damit Sie denselben Boilerplate nicht mehr dutzende Male täglich neu eingeben müssen. Die entwicklerfreundliche Wahl ist Espanso, ein kostenloser, quelloffener, plattformübergreifender Expander, der in Rust geschrieben wurde und dessen gesamte Konfiguration aus einfachem YAML besteht, das Sie in Git versionieren können. Dieser Artikel ist ein direkt verwendbares Kochbuch: echte Espanso-Snippets für Git-Befehle, PR-Gerüste und wiederverwendbare KI-Prompts, plus die drei dynamischen Stellhebel – Shell-Ausgabe, Zwischenablage-Injektion und Cursor-Positionierung – die statischen Text in kontextbewusstes Werkzeug verwandeln.
Wichtigste Erkenntnisse
- Espanso ist ein kostenloser, quelloffener, plattformübergreifender Text Expander, der in Rust geschrieben wurde. Installieren Sie ihn auf macOS mit
brew install --cask espanso(macOS 11+), auf Linux über das.deb-Paket oder AppImage und auf Windows über den offiziellen Installer. - Um ein Commit-Snippet kontextbewusst zu machen, fügen Sie den aktuellen Branch mit einer Shell-Variable ein, die
git rev-parse --abbrev-ref HEADausführt, sodass ein Trigger immer mit dem Branch expandiert, auf dem Sie sich tatsächlich befinden. - Espanso positioniert den Cursor nach der Expansion mit dem
$|$-Hinweis, erlaubt jedoch nur einen Hinweis pro Match, und er kann sich in Editoren mit automatischer Einrückung unvorhersehbar verhalten – halten Sie PR-Gerüste daher im Browser-Beschreibungsfeld. - Espanso hat keine native Variable für „ausgewählten Text”: Kopieren Sie den Code zuerst, lösen Sie dann ein Snippet aus, das
{{clipboard}}liest, um eine markierte Funktion in einen LLM-Prompt einzubetten. - Da die Konfiguration aus einfachem YAML besteht, können Sie das gesamte Verzeichnis in einem Git-Repository versionieren und die Snippets eines Teams als privates Espanso-Paket teilen.
Warum ein Text Expander in Ihren Entwickler-Workflow gehört
Ein Text Expander ist jedes Werkzeug, das Ihre Tastatureingaben überwacht und einen definierten Trigger systemweit durch einen längeren, optional dynamischen Textblock ersetzt. Wenn Ihre Arbeit das wiederholte Eintippen desselben Vorlagentexts umfasst – Conventional Commits, PR-Beschreibungen, wiederkehrende Prompts – amortisiert er sich sofort. Die meisten Menschen begegnen Expandern erstmals durch E-Mail-Signaturen; der Mehrwert für Entwickler ist deutlich größer, weil so viel des Terminal-und-GitHub-Workflows aus Boilerplate besteht.
Drei Tools dominieren den Markt:
| Tool | Plattformen | Stärke |
|---|---|---|
| Espanso | Plattformübergreifend, Open-Source | YAML-Konfiguration, skriptfähig über Shell und dynamische Variablen – die Empfehlung hier |
| Raycast Snippets | macOS-zentriert | Launcher-Funktion mit dynamischen Platzhaltern |
| TextExpander | Plattformübergreifend (kostenpflichtig) | Teamorientiert, gemeinsam genutzte Ausfüllgruppen |
Wählen Sie Espanso, wenn Sie eine skriptfähige, git-versionierbare Konfiguration möchten, die auf allen Maschinen funktioniert.
Installieren Sie es und registrieren Sie den Hintergrunddienst:
# macOS (macOS 11+)
brew install --cask espanso
espanso service register
espanso start
Unter Linux empfehlen die offiziellen Installationsdokumente das .deb-Paket (per wget herunterladen, dann sudo apt install ./espanso-debian-x11-amd64.deb) oder das AppImage, gefolgt von espanso service register und espanso start; die Wayland-Unterstützung ist experimentell. Unter Windows wird der Installer von espanso.org verwendet. Bearbeiten Sie Snippets jederzeit mit espanso edit und laden Sie sie mit espanso restart neu.
Discover how at OpenReplay.com.
Git-Snippets: Häufig getippte Befehle automatisch expandieren
Speichern Sie Git-Trigger in einer Match-Datei und lassen Sie :cm eine Conventional-Commits-Nachricht gerüsten oder :undo einen Befehl expandieren, den Sie sich nie merken. Hier ist ein statisches Starter-Set:
# ~/.config/espanso/match/git.yml
matches:
- trigger: ":cm"
replace: "feat($|$): "
- trigger: ":undo"
replace: "git reset --soft HEAD~1"
- trigger: ":unstage"
replace: "git restore --staged ."
- trigger: ":wip"
replace: "chore: wip [skip ci]"
Das $|$ in :cm platziert den Cursor zwischen den Klammern, sodass Sie den Scope eingeben und weitermachen können.
Nun machen wir ein Snippet kontextbewusst. Die Shell-Erweiterung von Espanso führt einen Befehl aus und fügt seine Ausgabe ein, sodass Sie den aktuellen Branch in den Text ziehen können:
- trigger: ":br"
replace: "{{branch}}"
vars:
- name: branch
type: shell
params:
cmd: "git rev-parse --abbrev-ref HEAD"
Tippen Sie :br in einen Commit-Body oder PR-Kommentar, und es expandiert zu dem Branch, auf den HEAD zeigt – kein Kopieren und Einfügen, kein veralteter Branch-Name.
PR-Vorlagen: Ein ausfüllbares Gerüst
Ein :pr-Trigger kann zu einem vollständigen Summary / Changes / Testing / Screenshots-Gerüst expandieren, wobei der Cursor über $|$ in das erste Feld gesetzt wird und aus einem leeren PR-Feld ein Formular macht:
- trigger: ":pr"
replace: |
## Summary
$|$
## Changes
-
## Testing
-
## Screenshots
Espanso unterstützt den $|$-Cursor-Hinweis, erlaubt jedoch nur einen pro Match – weitere Hinweise werden ignoriert – und die Dokumentation warnt, dass er sich bei mehrzeiligen Expansionen unvorhersehbar verhalten kann, da Espanso Pfeiltasten-Drücke simuliert, was mit automatisch einrückenden Code-Editoren kollidiert. Lösen Sie :pr im GitHub-Beschreibungstextfeld aus, nicht in Ihrer IDE, und es verhält sich zuverlässig.
KI-Prompt-Snippets: Wiederverwendbare LLM-Gerüste
Behandeln Sie Prompts wie Commit-Vorlagen: Definieren Sie :review, :explain und :tests einmalig und hören Sie auf, sie neu zu schreiben. Die statischen Versionen sind reiner Text:
# ~/.config/espanso/match/ai.yml
matches:
- trigger: ":explain"
replace: "Explain the following code line by line, then note any bugs or edge cases:\n\n"
- trigger: ":tests"
replace: "Write unit tests for the following code. Cover happy path and edge cases:\n\n"
Der entscheidende Schritt ist das Einbetten von Code, den Sie gerade kopiert haben. Espanso hat keine native Variable für „ausgewählten Text”, daher lautet das Muster: zuerst kopieren, dann ein Snippet auslösen, das {{clipboard}} über die Zwischenablage-Erweiterung liest:
- trigger: ":review"
replace: "Review this code for bugs, security, and readability:\n\n```\n{{clipboard}}\n```"
vars:
- name: clipboard
type: clipboard
Markieren Sie eine Funktion, drücken Sie Kopieren, tippen Sie :review, und Sie erhalten einen umrahmten Code-Review-Prompt, der in jedes Modell eingefügt werden kann. Fortgeschrittene Nutzer können das Kopieren innerhalb einer Shell-Variable simulieren – der Community-Workaround führt xdotool key --clearmodifiers ctrl+c aus, bevor die Zwischenablage gelesen wird – aber der Zwei-Tasten-Ablauf „Kopieren, dann Trigger” ist einfacher und portabler.
Wie die dynamischen Variablen von Espanso funktionieren
Ein dynamisches Snippet liest seinen Wert aus einer Erweiterung – type: date für Zeitstempel, type: shell für Befehlsausgaben und type: clipboard für {{clipboard}} – und Espanso wertet Variablen von oben nach unten aus, sodass spätere Variablen frühere konsumieren können. Laut der Variablen-Dokumentation erhalten die Shell- und Script-Erweiterungen den aktuellen Scope als Umgebungsvariablen, weshalb eine Shell-Variable eine darüber definierte Clipboard-Variable lesen kann.
Diese Reihenfolge ermöglicht Komposition. Ein Datumsfeld für einen Changelog-Eintrag:
- trigger: ":today"
replace: "{{today}}"
vars:
- name: today
type: date
params:
format: "%Y-%m-%d"
Espanso 2.3.0 hat einen tz-Parameter zur Datumserweiterung hinzugefügt, um Zeiten in jeder IANA-Zeitzone zu erzeugen. Kombinieren Sie Shell-, Clipboard- und Datumsvariablen in einem Match, und Sie haben ein echtes Mikro-Werkzeug: Leiten Sie Clipboard-Inhalt durch einen Formatierer, stempeln Sie ihn ab und setzen Sie den Cursor dort, wo Sie weiterschreiben.
Konfiguration in Git versionieren und teilen
Da die Espanso-Konfiguration aus einfachem YAML besteht – führen Sie espanso path aus, um das Verzeichnis zu finden (unter Linux ~/.config/espanso) – können Sie den gesamten Ordner mit git init initialisieren, pushen und auf jede Maschine klonen, an der Sie arbeiten. Ihre Snippets werden zu einem versionierten, überprüfbaren Artefakt statt zu einem gerätespezifischen Zufallsprodukt.
Für Teams veröffentlichen Sie gemeinsam genutzte Commit- und PR-Snippets als Paket. Espanso installiert Pakete aus jedem Git-Repository mit der --git-Option und lädt direkt von Ihrem Host:
espanso install team-snippets --git https://github.com/your-org/espanso-snippets --external
Jeder erhält dieselben :cm-, :pr- und :review-Konventionen mit einem einzigen Befehl. TextExpander bietet eine vergleichbare Funktionalität über gemeinsam genutzte Gruppen; Espanso erledigt es mit den Git-Werkzeugen, die Sie bereits verwenden.
Beginnen Sie mit drei Dateien – git.yml, ai.yml und einem PR-Gerüst – committen Sie sie und fügen Sie jedes Mal ein Snippet hinzu, wenn Sie sich dabei ertappen, etwas erneut einzutippen. Die Konfiguration wächst mit Ihren Gewohnheiten, und das Muster „Kopieren, dann :trigger” ist der eine Schritt, der einen statischen Expander in einen kontextbewussten Teil Ihres Git- und KI-Workflows verwandelt.
Häufig gestellte Fragen
Wie unterscheidet sich Espanso von Raycast Snippets und TextExpander?
Espanso ist kostenlos, quelloffen, plattformübergreifend und in einfachem YAML konfiguriert, das Sie in Git versionieren und über Shell und dynamische Variablen skripten können. Raycast Snippets ist eine macOS-zentrierte Launcher-Funktion mit dynamischen Platzhaltern. TextExpander ist ein kostenpflichtiges, plattformübergreifendes Produkt, das auf Teams und gemeinsam genutzte Ausfüllgruppen ausgerichtet ist. Wählen Sie Espanso, wenn Sie eine skriptfähige, git-versionierbare Konfiguration möchten, die auf jeder Maschine funktioniert, an der Sie arbeiten.
Kann ich den Cursor nach der Expansion an mehr als einer Stelle positionieren?
Nein. Espanso erlaubt nur einen Cursor-Hinweis pro Match; weitere $|$-Hinweise in derselben Ersetzung werden ignoriert. Die Dokumentation warnt auch, dass der Hinweis sich bei mehrzeiligen Expansionen unvorhersehbar verhalten kann, da Espanso Pfeiltasten-Drücke simuliert, was mit automatisch einrückenden Code-Editoren kollidiert. Für PR-Gerüste lösen Sie das Snippet im Browser-Beschreibungstextfeld aus statt in Ihrer IDE, damit der einzelne Cursor zuverlässig landet.
Läuft die Shell-Erweiterung im Projektverzeichnis, sodass Git-Befehle funktionieren?
Ja. Die Shell-Erweiterung von Espanso führt den Befehl in Ihrem aktuellen Arbeitskontext aus, sodass type: shell mit cmd, das git rev-parse --abbrev-ref HEAD ausführt, den Branch des Repositories zurückgibt, in dem Sie gerade tippen. Die Erweiterung fügt die Standardausgabe des Befehls in die Expansion ein, sodass ein einzelner Trigger wie :br zum aktuellen Branch-Namen aufgelöst wird – ohne Kopieren und Einfügen und ohne veralteten Wert.
Wo speichert Espanso seine Konfiguration, damit ich sie in Git versionieren kann?
Führen Sie espanso path aus, um das Konfigurationsverzeichnis auszugeben, anstatt einen Pfad fest einzukodieren, da er je nach Betriebssystem unterschiedlich ist. Unter Linux ist es typischerweise ~/.config/espanso, während macOS einen Application-Support-Pfad verwendet. Das Verzeichnis enthält einfache YAML-Match-Dateien, sodass Sie den gesamten Ordner mit git init initialisieren, pushen und auf andere Maschinen klonen können. Bearbeiten Sie Dateien mit espanso edit und laden Sie sie mit espanso restart neu.