Custom snippets Beta

Repeat less. Insert deliberately.

Save reusable text or code as a snippet. AYVI expands it only after you press the Expand shortcut, or you choose an entry from the snippet palette.

Beta: Management and saving a selection from TextEdit were checked in practice. Expansion and the palette have not been systematically tested in target apps.

A deliberate flow

  1. Open Manage Snippets from Settings or the menu bar. Create a snippet, edit its template and description, then review the local preview.
  2. Type its trigger in an editable field. The default ⌃⌥E shortcut checks at most 32 UTF-16 code units before the caret, only when pressed. Alternatively, ⌃⌥Space opens the palette so you can choose a snippet.
  3. AYVI revalidates the target and text before insertion. If Accessibility writing is unavailable, a consent-gated clipboard fallback may be offered.

Triggers use ASCII characters and are 2 to 32 characters long. They can be global, assigned to a category/language, or scoped to selected apps. Matching ignores letter case.

Examples

These fixed examples run entirely in this browser. They take no input and send no request.

AYVIOffline example

sout → System.out.println({cursor});

trycatch → wrap a selection in a try/catch block

Choose a fixed example. No network request.

sout is a built-in Java snippet. trycatch can wrap an existing selection with {selection}. An email sign-off can also be saved as an ordinary text snippet; it is not bundled company content.

Templates with placeholders

Placeholders resolve locally during insertion. Fill-in fields with the same name share a value; Escape closes a form without changing the target.

{cursor}
Places the caret at that point. At most once per template.
{selection}
Inserts the current selection into the template. With no selection, the configured fallback is used.
{input:Name}, {input:Name=Default}
Prompts for text, optionally prefilled with a default.
{choice:Name=a|b|c}
Prompts for a choice among two to twenty options.
{date}, {date:Format}, {time}
Inserts the local date or time.
{clipboard}
Inserts clipboard contents when this token is explicitly used in a chosen snippet. A notice appears before first use.

Ordinary code braces need no escaping. Only known placeholder names are recognized; {{cursor}} outputs the literal text {cursor}.

Privacy and control

  • Snippet expansion does not continuously monitor keystrokes and uses no CGEventTap. Only the explicit shortcut reads the bounded text before the caret. The palette needs no before-caret read.
  • Password fields of type AXSecureTextField are excluded before reading and writing. The target app, focused element and text are rechecked before changes.
  • Snippets stay on this Mac in an encrypted local store with a separate keychain key. They are not sent to a provider or written to diagnostic logs.
  • “Save as Snippet” creates an unsaved draft from the current Accessibility selection after an explicit click. Cancel saves nothing; it does not read the clipboard or call a provider.
  • Insertion does not execute code or send Return. Terminal has additional confirmation and multiline safeguards.

The separate local snippet suggestions in the AYVI question field are independent and only suggest expansions in that input field.

Verification status and limits

Automated tests cover parsing, templates, storage, validation and insertion paths. They do not replace a practical test in every target app.

AreaDocumented status
Management and local storageManagement was checked in Settings; a custom entry remained after reopening the window.
Save a selectionThe main TextEdit flow was checked: open draft, cancel without saving, reopen and save.
Shortcut expansion and paletteInteraction in real target apps has not been systematically checked.
TextEdit, Mail, Notes, Safari, Chrome, IntelliJ, VS Code, Xcode, Terminal and iTermSnippet expansion is not currently confirmed compatible; see Compatibility and the manual test matrix in the repository.

The app supports macOS 14 or later. There is no public download and no guarantee that a snippet expands in every app or input field.

View source and local setup Changes and verification status