Exercise 1: Write Your Own Snippet — Possible Solution ==================================================================== STEPS ------------------------------ 1. Open the Command Palette (Ctrl+Shift+P) and run "Preferences: Configure User Snippets." 2. Select a language, e.g. "javascript.json" for JavaScript. 3. Add a snippet with at least 2 tab stops, for example a quick console.log with a labeled variable: { "Labeled console.log": { "prefix": "clog", "body": [ "console.log('${1:label}:', ${2:value});" ], "description": "console.log with a label and a value" } } 4. Save the file. 5. Open (or create) a .js file, type "clog", and press Tab. 6. The snippet expands to: console.log('label:', value); with "label" pre-selected. Type a real label, e.g. "userId", then press Tab again — the selection jumps to "value". Type a real variable name, e.g. "id". 7. Final result: console.log('userId:', id); WHY THIS WORKS AS AN ANSWER ------------------------------ The body array reuses the chapter's own snippet JSON structure exactly — prefix as the trigger text, body as an array of lines (here just one), and description shown in autocomplete tooltips. ${1:label} and ${2:value} reuse the chapter's own tab-stop syntax directly, each with placeholder text following the colon — this is what makes "label" and "value" appear pre-selected and ready to type over immediately when the snippet expands, rather than needing to manually select or delete placeholder text first. Using two tab stops (rather than just one) specifically demonstrates the chapter's own point about jumping between MULTIPLE placeholders in order with successive Tab presses — a single-stop snippet wouldn't show that sequencing behavior at all.