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

ConstructMeaningExample
wordEach bare word must appear. Multiple words are combined with AND.meeting notes
"exact phrase"Match the quoted text literally."star wars"
OREither 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).

OperatorMatchesExample
file:Text in the file namefile:2024-01
path:Text in the file pathpath:"Daily notes/2024"
content:Note content only, ignoring name and pathcontent:"happy cat"
tag:A tag, inline or in properties; the # is optionaltag:#work
line:( )All terms on the same lineline:(flour sugar)
block:( )All terms in the same blockblock:(dog cat)
section:( )All terms under the same headingsection:(intro goals)
task:Text inside any task linetask:call
task-todo:Text inside an incomplete tasktask-todo:call
task-done:Text inside a completed tasktask-done:call
match-case:Case-sensitive for this termmatch-case:NASA
ignore-case:Case-insensitive for this termignore-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.

FormMeaningExample
[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.