* [Variable as multiple arguments](#variable-as-multiple-arguments)
### Syntax overview
Cheatsheets are described in `.cheat` files that look like this:
```sh
% git, code
# Change branch
git checkout <branch>
$ branch: git branch | awk '{print $NF}'
```
Lines starting with:
-`%`: determine the start of a new cheatsheet and should contain tags
-`#`: should be descriptions of commands
-`;`: are ignored. You can use them for metacomments
-`$`: should contain commands that generate a list of possible values for a given argument [:information_source:](#variables)
-`@`: should contain tags whose associated cheatsheet you want to base on [:information_source:](#extending-cheatsheets)
All the other non-empty lines are considered as executable commands.
### Folder structure
It's irrelevant how many files are used to store cheatsheets. They can be all in a single file if you wish, as long as you split them accordingly with lines starting with `%`.
### Variables
The interface prompts for variable names inside brackets (eg `<branch>`).
Variable names should only include alphanumeric characters and `_`.
If there's a corresponding line starting with `$` for a variable, suggestions will be displayed. Otherwise, the user will be able to type any value for it.
If you hit `<tab>` the query typed will be prefered. If you hit `<enter>` the selection will be prefered.
### Advanced variable options
For lines starting with `$` you can use `---` to customize the behavior of `fzf` or how the value is going to be used:
```sh
# This will pick the 3rd column and use the first line as header
docker rmi <image_id>
# Even though "false/true" is displayed, this will print "0/1"