Plugin Frammenti¶
Digita un prefisso breve, premi ++tab++ e si espande in un intero costrutto: un ciclo
for, lo scheletro di una classe, una tabella Markdown, con il cursore pronto sul
primo spazio da riempire. Tab/Shift+Tab percorrono i campi, Esc conclude.
Il plugin fornisce anche File ▸ Nuovo da modello… per generare interi file.
Espandere un frammento¶
- Digita il prefisso di un frammento (diciamo
forin un file C++). - Premi ++tab++. Il prefisso viene sostituito dal corpo del frammento —come un solo passo di annullamento— e il primo campo risulta selezionato, pronto per essere sovrascritto.
- Premi ++tab++ per saltare al campo successivo, ++shift+tab++ per tornare indietro.
- Dopo l'ultimo campo, ++tab++ posiziona il cursore nella posizione finale del frammento. ++esc++ conclude la sessione in qualsiasi momento, lasciando il testo come è stato digitato.
Se la parola prima del cursore non è un prefisso di frammento, ++tab++ rientra come di consueto: il tasto viene preso in prestito solo quando c'è qualcosa da espandere. Mentre la finestra di completamento è aperta, ++tab++ appartiene a quella finestra.
Un'espansione su più righe eredita il rientro della riga in cui l'hai digitata, e i suoi fine riga seguono la convenzione del documento (CRLF/LF).
Frammenti nella finestra di completamento¶
Anche i prefissi dei frammenti compaiono nella finestra di completamento automatico, marcati con un piccolo glifo perché risaltino tra le parole comuni. Accettare una voce di frammento lo espande subito e avvia la sessione dei campi: lo stesso che digitare il prefisso e premere ++tab++.
Che cosa può contenere un frammento¶
| Elemento | Significato |
|---|---|
$1 … $9 |
Campi di arresto, visitati in ordine numerico (indipendentemente dalla loro posizione nel corpo). |
${1:valore} |
Un campo con contenuto iniziale, selezionato quando viene visitato. |
$0 |
Dove finisce il cursore dopo l'ultimo campo (per impostazione predefinita la fine del frammento). |
$FILENAME |
Il nome di file del documento (vuoto nei buffer non salvati). |
$DATE |
La data di oggi, in formato ISO (2026-07-06). |
$SELECTION |
Il testo selezionato quando il frammento è stato attivato. |
$CLIPBOARD |
Il testo attuale degli appunti. |
\$ |
Un simbolo di dollaro letterale. |
Tutto ciò che è malformato viene inserito alla lettera invece di fallire. Un indice di campo ripetuto nel corpo mantiene come campo attivo solo la prima occorrenza.
Gestire i frammenti¶
Preferenze ▸ Frammenti elenca ogni frammento: gli insiemi inclusi e i tuoi. Da lì:
- Aggiungi… crea un frammento nuovo: prefisso, ambito (identificatori di linguaggio
separati da virgola come
cpp, c; vuoto o*vale ovunque), descrizione e corpo. - Modifica… modifica i tuoi frammenti. Modificare un frammento incluso crea una tua copia, che ha la precedenza su quello incluso (stesso prefisso e ambito).
- Rimuovi rimuove i tuoi frammenti (quelli inclusi non si possono rimuovere: oscurali).
Vengono inclusi insiemi per C/C++, Python, JavaScript/TypeScript e Markdown, più due
aiuti universali (date, clip). I tuoi frammenti vengono archiviati in JSON nella
cartella dati del plugin (snippets/user.json); puoi anche metterci altri file
*.json: il formato corrisponde a quello dei file inclusi.
{
"language": ["cpp", "c"],
"snippets": [
{
"prefix": "for",
"description": "indexed for loop",
"body": ["for (${1:int i = 0}; ${2:i < count}; ${3:++i})", "{", "\t$0", "}"]
}
]
}
I corpi sono array di righe. Un array "scopes" per frammento sostituisce il valore
predefinito "language" del file.
Modelli di file¶
File ▸ Nuovo da modello… apre un selettore di impalcature di file: un sorgente
C++ con main, un'intestazione con guardia di inclusione, uno script Python, un
documento Markdown, una pagina HTML. Il modello scelto si apre come un documento
nuovo non salvato con le sue variabili ($DATE, $CLIPBOARD, …) già sostituite; gli
elementi di campo si riducono al loro testo predefinito.
Anche i modelli sono file JSON (templates/*.json, sia quelli inclusi sia quelli
nella cartella dati del plugin):
{
"templates": [
{
"name": "Python script",
"suggestedName": "script.py",
"body": ["#!/usr/bin/env python3", "", ""]
}
]
}
Limitazioni¶
- Un indice di campo ripetuto non viene rispecchiato (digitare nel campo 1 non
aggiorna un secondo
$1); le occorrenze successive sono testo comune. - I segnaposto annidati (
${1:${2:x}}) non sono supportati; il testo interno viene preso alla lettera. $FILENAMEè vuoto nei buffer non salvati.