Snippets-Plugin¶
Tippen Sie ein kurzes Präfix, drücken Sie ++tab++, und es entfaltet sich zu
einem ganzen Konstrukt — einer for-Schleife, einem Klassengerüst, einer
Markdown-Tabelle — mit dem Cursor auf der ersten auszufüllenden Stelle.
Tab/Shift+Tab wechseln zwischen den Feldern, Esc beendet. Das
Plugin liefert außerdem Datei ▸ Neu aus Vorlage… zum Aufsetzen ganzer
Dateien.
Ein Snippet entfalten¶
- Tippen Sie das Präfix eines Snippets (etwa
forin einer C++-Datei). - Drücken Sie ++tab++. Das Präfix wird durch den Snippet-Körper ersetzt — als ein Rückgängig-Schritt — und das erste Feld ist ausgewählt, bereit zum Übertippen.
- ++tab++ springt zum nächsten Feld, ++shift+tab++ zurück.
- Nach dem letzten Feld setzt ++tab++ den Cursor an die Endposition des Snippets. ++esc++ beendet die Sitzung jederzeit und lässt den Text wie getippt stehen.
Ist das Wort vor dem Cursor kein Snippet-Präfix, rückt ++tab++ wie üblich ein — die Taste wird nur ausgeliehen, wenn es etwas zu entfalten gibt. Ist das Vervollständigungs-Popup offen, gehört ++tab++ dem Popup.
Eine mehrzeilige Entfaltung erbt die Einrückung der Zeile, in der Sie sie getippt haben, und ihre Zeilenenden folgen der Konvention des Dokuments (CRLF/LF).
Snippets im Vervollständigungs-Popup¶
Snippet-Präfixe erscheinen auch im Autovervollständigungs-Popup, markiert mit einem kleinen Zeichen, das sie von normalen Wörtern abhebt. Das Annehmen eines Snippet-Eintrags entfaltet ihn sofort und startet die Feldsitzung — genau wie das Tippen des Präfixes plus ++tab++.
Was ein Snippet enthalten kann¶
| Token | Bedeutung |
|---|---|
$1 … $9 |
Tabstopp-Felder, in numerischer Reihenfolge besucht (unabhängig von ihrer Position im Körper). |
${1:default} |
Ein Feld mit Anfangsinhalt, beim Besuch ausgewählt. |
$0 |
Wo der Cursor nach dem letzten Feld landet (Standard: das Ende des Snippets). |
$FILENAME |
Der Dateiname des Dokuments (leer bei ungespeicherten Puffern). |
$DATE |
Das heutige Datum im ISO-Format (2026-07-06). |
$SELECTION |
Der beim Auslösen des Snippets ausgewählte Text. |
$CLIPBOARD |
Der aktuelle Text der Zwischenablage. |
\$ |
Ein wörtliches Dollarzeichen. |
Alles Fehlgeformte wird wörtlich eingefügt statt zu scheitern. Ein im Körper wiederholter Feldindex behält nur sein erstes Vorkommen als lebendiges Feld.
Snippets verwalten¶
Einstellungen ▸ Snippets listet jedes Snippet — die mitgelieferten Sätze und Ihre eigenen. Dort können Sie:
- Hinzufügen… — ein neues Snippet: Präfix, Geltungsbereich
(kommagetrennte Sprach-IDs wie
cpp, c; leer oder*gilt überall), Beschreibung und Körper. - Bearbeiten… — Ihre Snippets. Das Bearbeiten eines mitgelieferten Snippets erzeugt Ihre eigene Kopie, die Vorrang vor der mitgelieferten hat (gleiches Präfix und gleicher Geltungsbereich).
- Entfernen — Ihre Snippets (mitgelieferte lassen sich nicht entfernen — überschatten Sie sie stattdessen).
Mitgelieferte Sätze gibt es für C/C++, Python, JavaScript/TypeScript und
Markdown, plus zwei universelle Helfer (date, clip). Ihre Snippets liegen
als JSON im Datenverzeichnis des Plugins (snippets/user.json); Sie können
dort auch weitere *.json-Dateien ablegen — das Format entspricht den
mitgelieferten Dateien:
{
"language": ["cpp", "c"],
"snippets": [
{
"prefix": "for",
"description": "indexed for loop",
"body": ["for (${1:int i = 0}; ${2:i < count}; ${3:++i})", "{", "\t$0", "}"]
}
]
}
Körper sind Zeilen-Arrays. Ein "scopes"-Array pro Snippet übersteuert den
Datei-weiten "language"-Standard.
Dateivorlagen¶
Datei ▸ Neu aus Vorlage… öffnet eine Auswahl von Dateigerüsten — eine
C++-Quelle mit main, ein Header mit Include-Guard, ein Python-Skript, ein
Markdown-Dokument, eine HTML-Seite. Die gewählte Vorlage öffnet sich als
neues, ungespeichertes Dokument mit bereits ersetzten Variablen ($DATE,
$CLIPBOARD, …); Feld-Tokens fallen auf ihren Standardtext zusammen.
Vorlagen sind ebenfalls JSON-Dateien (templates/*.json, mitgeliefert und im
Datenverzeichnis des Plugins):
{
"templates": [
{
"name": "Python script",
"suggestedName": "script.py",
"body": ["#!/usr/bin/env python3", "", ""]
}
]
}
Grenzen¶
- Ein wiederholter Feldindex wird nicht gespiegelt (Tippen in Feld 1
aktualisiert kein zweites
$1); spätere Vorkommen sind normaler Text. - Verschachtelte Platzhalter (
${1:${2:x}}) werden nicht unterstützt; der innere Text wird wörtlich übernommen. $FILENAMEist in ungespeicherten Puffern leer.