Gå till innehållet

Insticksmodulen Kodfragment

Skriv ett kort prefix, tryck på ++tab++, och det utvidgas till en hel konstruktion — en for-slinga, ett klasskelett, en Markdown-tabell — med markören redo på den första lucka du behöver fylla. Tab/Shift+Tab cirkulerar mellan fälten, Esc avslutar. Insticksmodulen tillhandahåller också Fil ▸ Ny från mall… för att ställa upp hela filer.

Utvidga ett kodfragment

  1. Skriv ett kodfragments prefix (säg for i en C++-fil).
  2. Tryck på ++tab++. Prefixet ersätts av fragmentets kropp — som ett ångrasteg — och det första fältet markeras, redo att skriva över.
  3. Tryck på ++tab++ för att hoppa till nästa fält, ++shift+tab++ för att gå tillbaka.
  4. Efter det sista fältet placerar ++tab++ markören på fragmentets slutposition. ++esc++ avslutar sessionen när som helst och lämnar texten som skriven.

Om ordet före markören inte är ett kodfragmentsprefix drar ++tab++ in som vanligt — tangenten lånas bara när det finns något att utvidga. Medan kompletteringsfönstret är öppet tillhör ++tab++ det fönstret.

En utvidgning över flera rader ärver indraget från den rad du skrev den på, och dess radslut följer dokumentets konvention (CRLF/LF).

Kodfragment i kompletteringsfönstret

Kodfragmentens prefix visas också i fönstret för automatisk komplettering, märkta med ett litet tecken så att de sticker ut från vanliga ord. Att godta ett kodfragment utvidgar det direkt och startar fältsessionen — samma sak som att skriva prefixet och trycka på ++tab++.

Vad ett kodfragment kan innehålla

Symbol Betydelse
$1 … $9 Tabbstoppsfält, besökta i numerisk ordning (oavsett deras plats i kroppen).
${1:default} Ett fält med startinnehåll, markerat när det besöks.
$0 Där markören hamnar efter det sista fältet (som standard fragmentets slut).
$FILENAME Dokumentets filnamn (tomt för osparade buffertar).
$DATE Dagens datum, i ISO-format (2026-07-06).
$SELECTION Den text som var markerad när fragmentet framkallades.
$CLIPBOARD Urklippets aktuella text.
\$ Ett bokstavligt dollartecken.

Allt som är felformat infogas bokstavligt i stället för att misslyckas. Ett fältindex som upprepas i kroppen behåller bara sin första förekomst som ett levande fält.

Hantera kodfragment

Inställningar ▸ Kodfragment listar varje kodfragment — de medföljande uppsättningarna och dina egna. Därifrån kan du:

  • Lägg till… ett nytt fragment: prefix, omfattning (kommaseparerade språk-id:n såsom cpp, c; tomt eller * gäller överallt), beskrivning och kroppen.
  • Redigera… dina fragment. Att redigera ett medföljande fragment skapar din egen kopia, som har företräde framför det medföljande (samma prefix och omfattning).
  • Ta bort dina fragment (medföljande kan inte tas bort — skugga dem i stället).

Medföljande uppsättningar levereras för C/C++, Python, JavaScript/TypeScript och Markdown, plus två universella hjälpare (date, clip). Dina fragment lagras som JSON i insticksmodulens datamapp (snippets/user.json); du kan också lägga ytterligare *.json-filer där — formatet stämmer med de medföljande filerna:

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

Kroppar är vektorer av rader. En vektor "scopes" per fragment åsidosätter standardvärdet "language" på filnivå.

Filmallar

Fil ▸ Ny från mall… öppnar en väljare med filställningar — en C++-källfil med main, en header med en include-vakt, ett Python-skript, ett Markdown-dokument, en HTML-sida. Den valda mallen öppnas som ett nytt osparat dokument med sina variabler ($DATE, $CLIPBOARD, …) redan ersatta; fältsymboler faller tillbaka på sin standardtext.

Mallar är också JSON-filer (templates/*.json, både medföljande och i insticksmodulens datamapp):

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

Begränsningar

  • Ett upprepat fältindex speglas inte (att skriva i fält 1 uppdaterar inte ett andra $1); senare förekomster är vanlig text.
  • Nästlade platshållare (${1:${2:x}}) stöds inte; den inre texten tas bokstavligt.
  • $FILENAME är tomt i osparade buffertar.