Wtyczka Snippety¶
Wpisz krótki prefiks, naciśnij ++tab++, a rozwinie się w całą konstrukcję —
pętlę for, szkielet klasy, tabelę Markdown — z kursorem gotowym na pierwszym
polu do uzupełnienia. Tab/Shift+Tab przechodzą między polami, Esc
kończy. Wtyczka dostarcza też Plik ▸ Nowy z szablonu… do tworzenia całych
plików.
Rozwijanie snippetu¶
- Wpisz prefiks snippetu (np.
forw pliku C++). - Naciśnij ++tab++. Prefiks zostaje zastąpiony ciałem snippetu — jako jeden krok cofania — a pierwsze pole jest zaznaczone, gotowe do nadpisania.
- Naciśnij ++tab++, aby skoczyć do następnego pola, ++shift+tab++, aby wrócić.
- Po ostatnim polu ++tab++ ustawia kursor w końcowej pozycji snippetu. ++esc++ kończy sesję w dowolnym momencie, zostawiając tekst tak, jak jest.
Jeśli słowo przed kursorem nie jest prefiksem snippetu, ++tab++ robi zwykłe wcięcie — klawisz jest pożyczany tylko wtedy, gdy jest co rozwinąć. Gdy otwarte jest okienko autouzupełniania, ++tab++ należy do okienka.
Wielolinijkowe rozwinięcie dziedziczy wcięcie linii, w której je wpisano, a jego końce linii podążają za konwencją dokumentu (CRLF/LF).
Snippety w okienku autouzupełniania¶
Prefiksy snippetów pojawiają się też w okienku autouzupełniania, oznaczone małym glifem odróżniającym je od zwykłych słów. Zaakceptowanie pozycji snippetu rozwija go natychmiast i zaczyna sesję pól — tak samo jak wpisanie prefiksu i naciśnięcie ++tab++.
Co może zawierać snippet¶
| Token | Znaczenie |
|---|---|
$1 … $9 |
Pola tab-stop, odwiedzane w kolejności numerycznej (niezależnie od pozycji w ciele). |
${1:default} |
Pole z treścią początkową, zaznaczaną przy odwiedzeniu. |
$0 |
Miejsce, w którym kursor ląduje po ostatnim polu (domyślnie koniec snippetu). |
$FILENAME |
Nazwa pliku dokumentu (pusta dla niezapisanych buforów). |
$DATE |
Dzisiejsza data w formacie ISO (2026-07-06). |
$SELECTION |
Tekst zaznaczony w chwili wyzwolenia snippetu. |
$CLIPBOARD |
Bieżący tekst schowka. |
\$ |
Dosłowny znak dolara. |
Wszystko zniekształcone jest wstawiane dosłownie zamiast kończyć się błędem. Powtórzony w ciele indeks pola zachowuje jako żywe pole tylko pierwsze wystąpienie.
Zarządzanie snippetami¶
Preferencje ▸ Snippety wymienia każdy snippet — zestawy dołączone i Twoje własne. Stamtąd możesz:
- Dodać… nowy snippet: prefiks, zakres (identyfikatory języków po
przecinku, np.
cpp, c; pusty lub*działa wszędzie), opis i ciało. - Edytować… swoje snippety. Edycja snippetu dołączonego tworzy Twoją kopię, która ma pierwszeństwo przed dołączonym (ten sam prefiks i zakres).
- Usuwać swoje snippety (dołączonych nie da się usunąć — zamiast tego je przesłoń).
Dołączone zestawy obejmują C/C++, Pythona, JavaScript/TypeScript i Markdown,
plus dwa uniwersalne pomocniki (date, clip). Twoje snippety są zapisywane
jako JSON w katalogu danych wtyczki (snippets/user.json); możesz tam też
wrzucać dodatkowe pliki *.json — format odpowiada plikom dołączonym:
{
"language": ["cpp", "c"],
"snippets": [
{
"prefix": "for",
"description": "indexed for loop",
"body": ["for (${1:int i = 0}; ${2:i < count}; ${3:++i})", "{", "\t$0", "}"]
}
]
}
Ciała są tablicami linii. Tablica "scopes" per snippet nadpisuje domyślne
"language" z poziomu pliku.
Szablony plików¶
Plik ▸ Nowy z szablonu… otwiera wybór szkieletów plików — źródło C++ z
main, nagłówek z include guardem, skrypt Pythona, dokument Markdown, strona
HTML. Wybrany szablon otwiera się jako nowy, niezapisany dokument z już
podstawionymi zmiennymi ($DATE, $CLIPBOARD, …); tokeny pól zwijają się do
swojego tekstu domyślnego.
Szablony to też pliki JSON (templates/*.json, zarówno dołączone, jak i w
katalogu danych wtyczki):
{
"templates": [
{
"name": "Python script",
"suggestedName": "script.py",
"body": ["#!/usr/bin/env python3", "", ""]
}
]
}
Ograniczenia¶
- Powtórzony indeks pola nie jest lustrzany (pisanie w polu 1 nie
aktualizuje drugiego
$1); kolejne wystąpienia to zwykły tekst. - Zagnieżdżone pola (
${1:${2:x}}) nie są obsługiwane; tekst wewnętrzny trafia dosłownie. $FILENAMEjest pusty w niezapisanych buforach.