Search and find
Sigla has two search surfaces: a find-in-document bar for the file you’re reading, and a folder-search modal for cross-file queries.
Find in document — ⌘F
⌘F (Edit → Find → Find…) opens a native find bar above the document. It uses macOS’s standard NSTextFinder, so highlights respect your document’s typography and theme.
| Shortcut | Action |
|---|---|
⌘F | Show the find bar (and seed with selection if any) |
⌘G or Return | Next match |
⌘⇧G or Shift+Return | Previous match |
⌘E | Use Selection for Find (seed from the current selection without opening the bar) |
Esc or click Done | Dismiss the bar |
The status label reads “Found” or “Not Found” — an N-of-M total is a tracked follow-up. The bar closes when you switch documents and re-runs the active query after a live reload (when the source file changes on disk).
Search folder — ⌘⇧F
Requires an open folder workspace. ⌘⇧F (Edit → Search Folder…) opens a modal that queries across every Markdown file in the workspace.
The modal has:
- A query field at the top
- A result list below
- A footer with status (matched count, parse errors, etc.)
Click a result to open that file. The first 100 matches are shown — refine the query if you need to narrow.
Query syntax
Queries are built from three primitive types: words, phrases, and key:value filters. Whitespace separates terms.
Words
A bare word matches against filename, title, and body text. Case-insensitive substring match:
onboarding
release notes
The second example is two words — both must appear (AND across distinct words).
Phrases
Wrap in double quotes to match the exact phrase, including whitespace:
"release notes"
Filters
A key:value pair matches against frontmatter. The key looks up frontmatter fields (case-insensitive, with one-hop singular/plural aliasing — tag: and tags: resolve to the same set):
tag:release
status:draft
author:toni
Existence filters
A bare key with no value matches files where the key exists at all:
draft:
deadline:
Negation
Prefix any term with - to negate:
-draft: # files without a `draft` key
-tag:archive # files not tagged "archive"
release -tag:internal # files matching "release" but not tagged "internal"
Combining
Terms compose with AND across distinct keys and OR within a single key:
tag:release status:final # AND: tag=release AND status=final
tag:release tag:rc # OR: tag=release OR tag=rc
"release notes" -draft: # AND: phrase matches AND has no draft key
Quoting filter values
When a value contains spaces or special characters, quote it:
author:"José García"
title:"Q4 retrospective"
What’s indexed
- File basename (without
.mdextension) - The frontmatter
title:field (when present) - Frontmatter keys and values (all of them, recursively for lists)
- Body text (everything after the frontmatter block)
What’s NOT indexed
- Files inside hidden directories (anything starting with
.) - Files inside
.git,node_modules,.build,DerivedData,target,dist,build,__pycache__,.vscode,.idea(same ignore list as the folder workspace sidebar) - Non-Markdown files
- Sidecar JSON files (
.<file>.sigla.json— those hold comments, not searchable content)
Result ranking
Results are sorted into stable buckets:
- Filename match — basename equals the first search word.
- Title-prefix or substring match — title starts with or contains the word.
- Frontmatter-only match — only the filters matched, no body text hit.
- Body match — found in the body text.
Within a bucket, results are alphabetical by relative path. The first 100 results are returned.
Snippets
Each result row shows a snippet. The snippet source depends on what matched:
- Body match — ~120 characters of body text around the first hit, snapped to nearest word boundary, with
…ellipsis on each truncated end. - Title match — the title with the matched substring highlighted.
- Filter-only match — the first matched filter rendered as
key: value.
The frontmatter-click flow
In the Frontmatter panel, clicking any value runs a workspace search for key:value. This is the fastest way to find “all files tagged with the same X”:
- Click
tag: releasein the frontmatter panel. - The Search Folder modal opens with
tag:releasealready entered. - Results populate immediately.
Modify the query in the search field to refine further.
Cross-references
- Folder workspace — what you need to have open for
⌘⇧F - Keyboard shortcuts — find/search shortcut summary