Foam has various commands that you can explore by calling the command palette and typing “Foam”.
In particular, some commands can be very customizable and can help with custom workflows and use cases.
This command creates a note. Although it works fine on its own, it can be customized to achieve various use cases. Here are the settings available for the command:
notePath
: The path of the note to create. If relative it will be resolved against the workspace root.templatePath
: The path of the template to use. If relative it will be resolved against the workspace root.title
: The title of the note (that is, the FOAM_TITLE
variable)text
: The text to use for the note. If also a template is provided, the template has precedencevariables
: Variables to use in the text or templatedate
: The date used to resolve the FOAMDATE* variables. in YYYY-MM-DD
formatonFileExists?: 'overwrite' | 'open' | 'ask' | 'cancel'
: What to do in case the target file already existsTo customize a command and associate a key binding to it, open the key binding settings and add the appropriate configuration, here are some examples:
test note.md
with some text. If the note already exists, ask for a new name{
"key": "alt+f",
"command": "foam-vscode.create-note",
"args": {
"text": "test note ${FOAM_DATE_YEAR}",
"notePath": "test note.md",
"onFileExists": "ask"
}
}
weekly-note.md
template. If the note already exists, open it{
"key": "alt+g",
"command": "foam-vscode.create-note",
"args": {
"templatePath": ".foam/templates/weekly-note.md",
"onFileExists": "open"
}
}
This command opens a resource.
Normally it receives a URI
, which identifies the resource to open.
It is also possible to pass in a filter, which will be run against the workspace resources to find one or more matches.
Examples:
{
"key": "alt+f",
"command": "foam-vscode.open-resource",
"args": {
"filter": {
"title": "Weekly Note*"
}
}
}