Ga naar inhoud

Plug-in Fragmenten

Typ een kort voorvoegsel, druk op ++tab++, en het vouwt uit tot een hele constructie — een for-lus, een klassegeraamte, een Markdown-tabel — met de cursor klaar op de eerste lege plek die u moet invullen. Tab/Shift+Tab lopen de velden af, Esc sluit af. De plug-in levert ook Bestand ▸ Nieuw op basis van sjabloon… om hele bestanden op te zetten.

Een fragment uitvouwen

  1. Typ het voorvoegsel van een fragment (bijvoorbeeld for in een C++-bestand).
  2. Druk op ++tab++. Het voorvoegsel wordt door het lichaam van het fragment vervangen — als één stap ongedaan maken — en het eerste veld is geselecteerd, klaar om overheen te typen.
  3. Druk op ++tab++ om naar het volgende veld te springen, ++shift+tab++ om terug te gaan.
  4. Na het laatste veld zet ++tab++ de cursor op de eindpositie van het fragment. ++esc++ beëindigt de sessie op elk moment en laat de tekst zoals getypt staan.

Is het woord voor de cursor geen voorvoegsel van een fragment, dan springt ++tab++ zoals gebruikelijk in — de toets wordt alleen geleend wanneer er iets uit te vouwen valt. Terwijl de aanvulpop-up open staat, hoort ++tab++ bij de pop-up.

Een uitvouwing over meerdere regels erft de inspringing van de regel waarop u hem typte, en de regeleinden ervan volgen de afspraak van het document (CRLF/LF).

Fragmenten in de aanvulpop-up

Voorvoegsels van fragmenten verschijnen ook in de pop-up voor automatisch aanvullen, gemerkt met een klein teken zodat ze opvallen tussen gewone woorden. Een fragmentitem aanvaarden vouwt het meteen uit en start de veldsessie — hetzelfde als het voorvoegsel typen en op ++tab++ drukken.

Wat een fragment kan bevatten

Teken Betekenis
$1 … $9 Tabstopvelden, in numerieke volgorde bezocht (ongeacht hun plek in het lichaam).
${1:default} Een veld met beginhoud, geselecteerd wanneer het bezocht wordt.
$0 Waar de cursor na het laatste veld belandt (standaard het einde van het fragment).
$FILENAME De bestandsnaam van het document (leeg voor niet-opgeslagen buffers).
$DATE De datum van vandaag, in ISO-notatie (2026-07-06).
$SELECTION De tekst die geselecteerd was toen het fragment werd aangeroepen.
$CLIPBOARD De huidige tekst op het klembord.
\$ Een letterlijk dollarteken.

Alles wat verkeerd gevormd is wordt letterlijk ingevoegd in plaats van te mislukken. Een veldindex die in het lichaam herhaald wordt houdt alleen zijn eerste voorkomen als levend veld.

Fragmenten beheren

Voorkeuren ▸ Fragmenten toont elk fragment — de meegeleverde sets en die van uzelf. Van daaruit kunt u:

  • een nieuw fragment Toevoegen…: voorvoegsel, bereik (door komma's gescheiden taal-id's zoals cpp, c; leeg of * geldt overal), beschrijving en het lichaam.
  • uw fragmenten Bewerken…. Een meegeleverd fragment bewerken maakt uw eigen kopie, die voorrang heeft op het meegeleverde (zelfde voorvoegsel en bereik).
  • uw fragmenten Verwijderen (meegeleverde kunnen niet verwijderd worden — overschaduw ze in plaats daarvan).

Er worden meegeleverde sets geleverd voor C/C++, Python, JavaScript/TypeScript en Markdown, plus twee universele hulpjes (date, clip). Uw fragmenten worden als JSON in de gegevensmap van de plug-in bewaard (snippets/user.json); u kunt daar ook extra *.json-bestanden neerzetten — de opmaak komt overeen met die van de meegeleverde bestanden:

{
    "language": ["cpp", "c"],
    "snippets": [
        {
            "prefix": "for",
            "description": "indexed for loop",
            "body": ["for (${1:int i = 0}; ${2:i < count}; ${3:++i})", "{", "\t$0", "}"]
        }
    ]
}

Lichamen zijn arrays van regels. Een array "scopes" per fragment overschrijft de standaard "language" op bestandsniveau.

Bestandssjablonen

Bestand ▸ Nieuw op basis van sjabloon… opent een keuzelijst met bestandsgeraamtes — een C++-bronbestand met main, een header met een include-waarborg, een Python-script, een Markdown-document, een HTML-pagina. Het gekozen sjabloon opent als een nieuw, niet-opgeslagen document met zijn variabelen ($DATE, $CLIPBOARD, …) al ingevuld; veldtekens vallen terug op hun standaardtekst.

Sjablonen zijn eveneens JSON-bestanden (templates/*.json, zowel meegeleverd als in de gegevensmap van de plug-in):

{
    "templates": [
        {
            "name": "Python script",
            "suggestedName": "script.py",
            "body": ["#!/usr/bin/env python3", "", ""]
        }
    ]
}

Beperkingen

  • Een herhaalde veldindex wordt niet gespiegeld (typen in veld 1 werkt een tweede $1 niet bij); latere voorkomens zijn gewone tekst.
  • Geneste tijdelijke aanduidingen (${1:${2:x}}) worden niet ondersteund; de binnentekst wordt letterlijk genomen.
  • $FILENAME is leeg in niet-opgeslagen buffers.