espanso/docs/matches.md
2019-09-28 18:34:39 +02:00

69 lines
1.7 KiB
Markdown

---
title: Matches
layout: docs
---
Matches are the espanso's core component and define the substitutions that will take place.
### Static Matches
In their most basic form, **Matches are pairs that associate a *trigger* with a *replaced text***.
For example, we can define a match that will expand every occurrence of `hello` with `world` while we are typing. Using the [YAML](https://en.wikipedia.org/wiki/YAML) syntax, it can be expressed as:
```
- trigger: "hello"
replace: "world"
```
To replace the original text with a *multi-line* expansion, we can use the `\n` line terminator character, such as:
```
- trigger: "hello"
replace: "line1\nline2"
```
These kind of expansions are simple text replacements and are *static*.
### Dynamic Matches
Static matches are suitable for many tasks, but can be problematic when we need an **expansion that changes dynamically**. For those situations, espanso introduces the concepts of **variables** and **extensions**.
**Variables** can be used in the **replace** clause of a Match to include the *output* of a dynamic component, the **extension**. To make things more clear, let's see an example:
We want to create a match that, everytime we type `:now`, it expands it to include the current time, like:
```
It's 11:29
```
Let's add the following match to a configuration file, such as the `default.yml` config.
{% raw %}
```
- trigger: ":now"
replace: "It's {{mytime}}"
vars:
- name: mytime
type: date
params:
format: "%H:%M"
```
{% endraw %}
And restart espanso with:
```
espanso restart
```
At this point, everytime we type `:now`, we should see something like: `It's 09:33`!
Let's analyze the match step by step:
TODO
### Script Extension
### Shell Extension
### Date Extension