# Obsidian ## Markdown Support For portability, Obsidian supports [CommonMark](https://commonmark.org/) and [GitHub Flavored Markdown](https://github.github.com/gfm/) (GFM): code fences with syntax highlighting, tables, task lists, and strikethrough. For expressiveness, Obsidian also supports: - `#tags` and `#tags/subtags` - `$LaTeX math$` - `[^footnotes]` - `[[Internal links]]` - `![[Filename]]` to embed notes and other files ## Useful Shortcuts | macOS | Windows/Linux | Action | | ----------- | ------------- | ----------------------------------- | | `Shift+Del` | `Shift+Del` | Delete entire row (same as VS Code) | ## CLI Obsidian has had a CLI since v1.12.0 (Early Access, Feb 2026). Requires a [Catalyst license](https://obsidian.md/pricing) ($25 one-time). Planned to be free for all users in the future. ### Setup on macOS 1. **Settings → General** → log in, confirm Catalyst license is recognized 2. Toggle **"Receive insider builds"** → check for updates → restart 3. **Settings → Command line interface** → turn on This should add `obsidian` to your PATH via `~/.zprofile`. If it doesn't work, add it manually: ```bash # In ~/.zshrc or ~/.zprofile export PATH="$PATH:/Applications/Obsidian.app/Contents/MacOS" ``` Verify with: ```bash obsidian help ``` ### Publish Commands ```bash obsidian publish:list # List all published notes obsidian publish:list total # Count published notes obsidian publish:status # List ALL unpublished files as pending (vault-wide) obsidian publish:add path=<path> # Publish a specific note obsidian publish:remove path=<path> # Unpublish a note obsidian publish:open path=<path> # Open a note on the published site obsidian publish:site # Show publish site info ``` > **Warning:** `publish:add changed` is buggy in this early CLI release — it treats every unpublished file in the vault as "changed" and publishes them all, not just files you actually modified. `publish:status` has the same issue, listing the entire vault as pending. **Do not use `publish:add changed` unless you want to publish everything.** Use the folder-scoped approach below instead. > > **Note:** The CLI sometimes produces no stdout when invoked from non-interactive shells, even though commands succeed. If output is missing, verify in a regular terminal. Publish an entire folder[^1]: ```bash files=$(obsidian files folder=Brain ext=md) && \ while IFS= read -r f; do obsidian publish:add path="$f" </dev/null done <<< "$files" ``` [^1]: `publish:add` has no native folder support. It also consumes stdin, so `</dev/null` is needed to prevent it from eating the file list. ### Other Useful Commands ```bash obsidian search "query" # Search vault obsidian files # List vault files obsidian create <path> # Create a note obsidian read <path> # Read a note obsidian tags # List all tags obsidian backlinks <path> # Show backlinks obsidian unresolved # List unresolved wikilinks (vault-wide) obsidian unresolved verbose # Include source files obsidian orphans # List files with no incoming links obsidian deadends # List files with no outgoing links obsidian tasks # List tasks obsidian daily # Open/create daily note obsidian sync:status # Check Sync status obsidian plugins # List plugins ``` Run `obsidian help <command>` for details on any command. ### Links - [Official CLI docs](https://help.obsidian.md/cli) - [Features overview](https://obsidian.md/features) ## Related Notes | Note | Description | |------|-------------| | [[Dataview]] | Query vault metadata like a database | | [[Excalidraw]] | Sketching and diagramming inside Obsidian | | [[Find Unlinked Files]] | Find orphaned files and broken links | | [[Markdownlint]] | Linting config tuned for Obsidian, with Lefthook pre-commit hook | | [[Meld Encrypt]] | Encrypt notes or selections in-place | ## Importing from Bear When importing notes from Bear, image references break. Fix with a regex find-and-replace in [[VS Code]]: **Find:** `(!\[\]\(.*/)(.*)\)` **Replace:** `![[$2]]`