Extension Extraits¶
Tapez un court préfixe, appuyez sur ++tab++, et il se développe en une
construction complète — une boucle for, un squelette de classe, un tableau
Markdown — avec le curseur prêt sur le premier champ à remplir.
Tab/Shift+Tab font défiler les champs, Esc termine. L'extension
fournit aussi Fichier ▸ Nouveau depuis un modèle… pour créer des fichiers
entiers.
Développer un extrait¶
- Tapez le préfixe d'un extrait (disons
fordans un fichier C++). - Appuyez sur ++tab++. Le préfixe est remplacé par le corps de l'extrait — en une seule étape d'annulation — et le premier champ est sélectionné, prêt à être écrasé.
- Appuyez sur ++tab++ pour passer au champ suivant, ++shift+tab++ pour revenir en arrière.
- Après le dernier champ, ++tab++ place le curseur à la position finale de l'extrait. ++esc++ met fin à la session à tout moment, en laissant le texte tel que tapé.
Si le mot devant le curseur n'est pas un préfixe d'extrait, ++tab++ indente comme d'habitude — la touche n'est empruntée que lorsqu'il y a quelque chose à développer. Tant que la fenêtre de complétion est ouverte, ++tab++ appartient à cette fenêtre.
Un développement multiligne hérite de l'indentation de la ligne où vous l'avez tapé, et ses fins de ligne suivent la convention du document (CRLF/LF).
Les extraits dans la fenêtre de complétion¶
Les préfixes d'extraits apparaissent aussi dans la fenêtre de complétion automatique, marqués d'un petit glyphe pour se distinguer des mots ordinaires. Accepter un élément extrait le développe immédiatement et démarre la session de champs — comme si vous aviez tapé le préfixe puis appuyé sur ++tab++.
Ce qu'un extrait peut contenir¶
| Jeton | Signification |
|---|---|
$1 … $9 |
Champs tabulés, visités dans l'ordre numérique (indépendamment de leur position dans le corps). |
${1:default} |
Un champ avec contenu initial, sélectionné à la visite. |
$0 |
Là où finit le curseur après le dernier champ (par défaut la fin de l'extrait). |
$FILENAME |
Le nom de fichier du document (vide pour les tampons non enregistrés). |
$DATE |
La date du jour, au format ISO (2026-07-06). |
$SELECTION |
Le texte sélectionné au déclenchement de l'extrait. |
$CLIPBOARD |
Le texte courant du presse-papiers. |
\$ |
Un signe dollar littéral. |
Tout élément mal formé est inséré littéralement plutôt que d'échouer. Un indice de champ répété dans le corps ne conserve que sa première occurrence comme champ actif.
Gérer les extraits¶
Préférences ▸ Extraits liste tous les extraits — les jeux fournis et les vôtres. De là, vous pouvez :
- Ajouter… un nouvel extrait : préfixe, portée (identifiants de langage
séparés par des virgules comme
cpp, c; vide ou*s'applique partout), description, et le corps. - Modifier… vos extraits. Modifier un extrait fourni crée votre propre copie, qui prend le pas sur l'extrait fourni (même préfixe et même portée).
- Supprimer vos extraits (les extraits fournis ne peuvent pas être supprimés — masquez-les plutôt).
Des jeux fournis existent pour C/C++, Python, JavaScript/TypeScript et Markdown,
plus deux aides universelles (date, clip). Vos extraits sont stockés en JSON
dans le répertoire de données de l'extension (snippets/user.json) ; vous
pouvez aussi y déposer des fichiers *.json supplémentaires — le format
correspond aux fichiers fournis :
{
"language": ["cpp", "c"],
"snippets": [
{
"prefix": "for",
"description": "indexed for loop",
"body": ["for (${1:int i = 0}; ${2:i < count}; ${3:++i})", "{", "\t$0", "}"]
}
]
}
Les corps sont des tableaux de lignes. Un tableau "scopes" par extrait
remplace le défaut "language" du fichier.
Modèles de fichiers¶
Fichier ▸ Nouveau depuis un modèle… ouvre un sélecteur de squelettes de
fichiers — une source C++ avec main, un en-tête avec garde d'inclusion, un
script Python, un document Markdown, une page HTML. Le modèle choisi s'ouvre
comme nouveau document non enregistré, ses variables ($DATE, $CLIPBOARD, …)
déjà substituées ; les jetons de champ se réduisent à leur texte par défaut.
Les modèles sont aussi des fichiers JSON (templates/*.json, fournis comme dans
le répertoire de données de l'extension) :
{
"templates": [
{
"name": "Python script",
"suggestedName": "script.py",
"body": ["#!/usr/bin/env python3", "", ""]
}
]
}
Limitations¶
- Un indice de champ répété n'est pas mis en miroir (taper dans le champ 1 ne
met pas à jour un second
$1) ; les occurrences suivantes sont du texte brut. - Les espaces réservés imbriqués (
${1:${2:x}}) ne sont pas pris en charge ; le texte intérieur est pris littéralement. $FILENAMEest vide dans les tampons non enregistrés.