Keyguard replaces placeholders when performing an action with the field (copying, opening in a browser and more). The feature is largely based on the [Keepass's specification](https://keepass.info/help/base/placeholders.html).
**At this moment placeholders are supported in**:
- URL field;
- URL override commands.
**Basics**:
- placeholders and their basics parameters are _case-insensitive_;
- placeholders are resolved using the shared constant time, all time-sensitive placeholders will be synced;
- if no value is found, the placeholder will be replaced with an empty string: `{otp}` will be replaced with an empty string if an entry doesn't have one-time password configured;
- if no placeholder is found, the placeholder will be kept in it's original form: `{keyguard}` will be replaced with `{keyguard}`.
### Types
#### Entry Core
| Placeholder | Description |
| :- | :---- |
| `uuid` | UUID |
| `title` | Title/Name |
| `username` | Username |
| `password` | Password |
| `otp` | One-time password |
| `notes` | Notes |
| `favorite` | Favorite |
Example:
```
> https://example.com?user={username}
https://example.com?user=joe
```
#### Entry Custom Field
Custom strings can be referenced using `{s:name}`. For example, if you have a custom string named "Email", you can use the placeholder `{s:email}`.
| Placeholder | Description |
| :- | :---- |
| `s:value` | First of the custom fields named 'value' |
_Example_:
```
> https://example.com?license={s:license}
https://example.com?license=12345678ABCD
```
#### Entry URL
\***URL override specific**\*
This is useful in URL override command field. You can extract data from the URL for your new *command*.
Note: `{base}` supports exactly the same parts as `{url}` and is identical to it.
the first symbol after `:` defines the separator. It may be any symbol except `{` and `}`. Trailing separator symbol is required.
_Example_:
Let the username field contain the email address 'username@example.com', then:
```
> {t-replace-rx:/{username}/.*@(.*)/$1/}
example.com
```
for more info how it works, see the [underlying implementation's documentation](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-regex/replace.html)