Search
Fable's search is a small query language. Beyond plain words, you get boolean logic, exact phrases, regular expressions, and a set of typed operators that reach into file names, paths, tags, tasks and properties. This page is the complete reference.
Opening search
Open the Search pane from the left sidebar, or press Ctrl Shift F. Search covers note content and canvas content, and it reads from the same metadata index that powers backlinks and the graph, so results reflect the parsed structure of your notes, not just raw text.
Search is case-insensitive by default. Toggle Match case in the search bar to make the whole query case-sensitive, or control it per term with the match-case: and ignore-case: operators below.
Words, phrases and boolean logic
| Construct | Meaning | Example |
|---|---|---|
word | Each bare word must appear. Multiple words are combined with AND. | meeting notes |
"exact phrase" | Match the quoted text literally. | "star wars" |
OR | Either side matches. | meeting OR call |
- | Exclude the following term or group. | meeting -work |
( ) | Group sub-expressions to set precedence. | meeting (work OR home) |
-( ) | Exclude a whole group. | meeting -(work home) |
Precedence: a space means AND, OR combines the expressions on either side, and - negates the term or group right after it. So meeting work OR home personal reads as (meeting AND work) OR (home AND personal). Use parentheses whenever you want to be sure.
Typed operators
Operators take the form operator:argument. The argument can be a bare word, a quoted phrase, a regular expression, or a parenthesized sub-query such as task:(call OR email).
| Operator | Matches | Example |
|---|---|---|
file: | Text in the file name | file:2024-01 |
path: | Text in the file path | path:"Daily notes/2024" |
content: | Note content only, ignoring name and path | content:"happy cat" |
tag: | A tag, inline or in properties; the # is optional | tag:#work |
line:( ) | All terms on the same line | line:(flour sugar) |
block:( ) | All terms in the same block | block:(dog cat) |
section:( ) | All terms under the same heading | section:(intro goals) |
task: | Text inside any task line | task:call |
task-todo: | Text inside an incomplete task | task-todo:call |
task-done: | Text inside a completed task | task-done:call |
match-case: | Case-sensitive for this term | match-case:NASA |
ignore-case: | Case-insensitive for this term | ignore-case:ikea |
The tag: operator ignores tags written inside code blocks. A parent tag matches its nested children.
Searching properties
Query properties with square brackets.
| Form | Meaning | Example |
|---|---|---|
[property] | Has the property, any value | [aliases] |
[property:value] | Property equals value | [status:Draft] |
[property:null] | Present but empty | [aliases:null] |
[property:A OR B] | Either value | [status:Draft OR Published] |
[property:<n] / [property:>n] | Numeric comparison | [duration:>5] |
Regular expressions
Wrap a pattern in forward slashes to search with JavaScript-flavored regular expressions. Regex combines with operators.
/\d{4}-\d{2}-\d{2}/ dates like 2024-01-31
path:/\d{4}-\d{2}-\d{2}/ dated file paths
file:/^\d/ file names that start with a digit
Putting it together
Operators, boolean logic and regex all compose. A realistic query:
tag:#project (path:"Work/" OR path:"Clients/") -task-done: content:"due"
This finds notes tagged #project, under either the Work or Clients folder, that are not completed tasks, and that contain the phrase due.
Reading the results
- Results are grouped by file, and each group collapses and expands.
- Each match shows a context snippet with your query highlighted; Show more context widens it.
- A sort dropdown orders results by file name, or by modified or created time, ascending or descending.
- Copy search results produces a Markdown list of the matching files, and any search can be bookmarked.
- Explain search term shows how Fable parsed your query, which is handy when precedence surprises you.
Embedded search blocks
Drop a live search into a note by fencing a query with the language query. It renders inline and updates as your vault changes.
```query
tag:#todo -task-done:
```
Embedded queries use the same grammar as the search pane: phrases, boolean logic, every operator, property brackets and regex.
Find and replace in a note
To search within the note you are editing rather than the whole vault, press Ctrl F to open the find panel. It highlights matches and cycles through them with Enter, and includes replace and replace-all fields for the current note.