# Snippets (/features/snippets)



<Callout title="Being written">
  This page is a stub.
</Callout>

Type `vn`, get `Vietnam`. Each snippet decides for itself whether it fires on
the following space or the moment the trigger is finished, and each says where
it works — everywhere except some applications, or only in some — over a
pane-wide list that switches all of them off at once.

A replacement can hold [dynamic variables](/features/variables), so part of it
is fresh every time.

## Vietnamese and other input methods [#vietnamese-and-other-input-methods]

Lumi never deletes on trust. The keystrokes it watches are a *guess* at what was
typed, because a Vietnamese IME rewrites characters after Lumi has seen them. So
before replacing anything, Lumi reads the text actually in front of the caret:

* It matches → the replacement happens.
* It does not match → &#x2A;*nothing happens, silently.** Eating the wrong characters
  is much worse than a missed expansion.
* The application exposes no text at all → Lumi falls back to backspaces.

Needs the [Accessibility permission](/get-started/permissions).

## To write [#to-write]

* Trigger rules, and what characters may be in one
* Per-snippet scope, and the master switch
* Where the history of what fired is kept
