Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Olive - Markdown EditorNew to Visual Studio Code? Get it now.
Olive - Markdown Editor

Olive - Markdown Editor

Preview

Mohashi

|
2 installs
| (0) | Free
A WYSIWYG Markdown editor for VS Code: write formatted documents with typeset LaTeX math, tables and Mermaid, while the file on disk stays plain Markdown.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Olive - Markdown Editor

Edit Markdown as it looks when rendered — you work with the formatted document, and Olive writes the syntax for you. Headings, code, tables and LaTeX math all stay editable in place. The file on disk stays plain Markdown.

A learning log opened as Markdown source in VS Code, switched to Olive, and edited visually: bold text, inline code and inline math form from typed Markdown; the formula updates while its LaTeX is edited in a popup; a Mermaid diagram renders; a table column moves from its right-click menu; and the file returns to plain Markdown source

Why Olive

  • You never see the markup — ##, ** and $ stay hidden even on the line you are typing, so lines keep their height and nothing below them shifts while you write.
  • Formatting keeps up with your typing — Markdown you type turns into formatting as you finish it, the shortcuts you already know still work, and selecting text brings up buttons for bold, italic, code, links and inline math.
  • Edit documents visually — tables, callouts, toggles, images and Mermaid diagrams are shown the way they will look, and you edit them from there.
  • Work with blocks — every block has a handle on its left: drag it to move the block, select several blocks to move them together, or right-click the handle to turn the block into something else, duplicate it, copy it, or edit its Markdown source.
  • Your Markdown comes back unchanged — Olive keeps your original text for everything you did not touch, so opening a file and saving it without editing gives back a byte-for-byte identical file, and the parts you never visited are never re-wrapped or tidied up. You can switch the whole file back to VS Code's text editor at any time.
  • Math keeps looking like math while you edit it — click a formula, or move the cursor into it and press Enter, and you edit its LaTeX while the formula on the page updates as you type. The document itself never falls back to $…$. Other WYSIWYG Markdown editors show the raw Markdown of whichever block you are on — Microsoft's Markdown Editor (Experimental) among them — and cannot do this.
  • Formatting works in Japanese and other CJK text — patterns such as **bold** and $math$ turn into formatting right after a Japanese, Chinese or Korean character with no space in between, and nothing converts while your IME is still composing.
  • Keep the VS Code workflow — Olive changes how the file looks while you edit it and nothing else: saving, history, Undo/Redo, Git and conflict resolution are all still VS Code's. When something outside Olive changes the file — a coding agent, a Git checkout, another editor — the open document follows along right away. No network requests, no telemetry.

Open a file in Olive

Olive does not take over .md files. VS Code's text editor stays the default, and you opt in per file. This remains true on versions that also include Microsoft's Markdown Editor (Experimental):

  • Click the Olive icon on the editor title bar while a Markdown file is open, or
  • Right-click a .md file in the Explorer and choose Open in Olive, or
  • Reopen Editor With… → Olive, or
  • run Open in Olive from the Command Palette while a Markdown file is active.

The same file opened in VS Code's text editor, switched to Olive with the title bar icon, edited, then switched back to the text editor with the edit present as plain Markdown

To make Olive the default for every .md file, add this to your settings:

"workbench.editorAssociations": {
  "*.md": "olive.markdown"
}

To go back to the raw text for one file, run Olive: Open as Markdown Source from the Command Palette or use the code icon on the editor title bar. Switching either way keeps unsaved changes. If the file has unsaved changes and no other tab is holding them, the editor you came from stays open beside the new one and a notification offers to close it; otherwise it closes on its own.

Insert blocks

Type / for headings, lists, task lists, quotes, code blocks, math blocks, callouts, toggles, tables and Mermaid diagrams. Search is case-insensitive and matches block names and the keywords below, with closer matches listed first; typing characters outside letters, digits, spaces and hyphens dismisses the menu.

Block Primary search term
Text (paragraph) /text (also /paragraph, /plain)
Heading 1–5 /h1–/h5 (also /title, /section, /subsection, /subsubsection for H1–H4)
Bulleted list /bullet
Numbered list /numbered
Task list /todo
Quote /quote
Code block /code
Math block /math, /equation, /tex, or /latex
Callout /callout
Toggle /toggle
Table /table
Mermaid diagram /mermaid or /diagram

Editing

  • Format text — select text to show controls for bold, italic, strikethrough, inline code, links and inline math.

  • Images — paste or drop an image into the document and Olive stores it in an assets/ folder beside the note, linking it with a relative ![](https://github.com/mohashii/olive-feedback/raw/HEAD/assets/…) path. PNG, JPEG, GIF, WebP, SVG, AVIF and BMP are accepted, and images referenced by an https:// URL are shown as well. Move or rename a note and the images in its own assets/ folder move with it; links to images you keep elsewhere in the workspace are rewritten instead, so they keep pointing at the same file.

  • Block handles — drag to reorder a block or selected range. Right-click a handle to transform, duplicate, copy, delete or edit the block's Markdown source.

    Selecting a list and a callout with a drag from the left gutter, then dragging both blocks to a new position as one range

  • Links — links to other .md files in the workspace open in Olive, #heading fragments jump within the document, and everything else opens in your browser.

  • Outline — while an Olive editor is active, the Olive Outline view in the Explorer lists the document's headings; click one to jump to it.

  • Math — type $x$ to turn it into inline math as you write, select text and press $ to wrap it, or use ⇧⌘E. $$ on an empty line starts a block, and /math inserts one too. Everything renders with KaTeX. Click a formula — or arrow into it and press Enter — to edit its LaTeX; inline formulas re-render in place in the document as you type.

    Click an inline formula, edit its LaTeX, and watch the typeset result follow along while the document never shows dollar-sign source

  • Mermaid — insert a diagram from the slash menu. Click the rendered diagram to edit its source with a live preview.

    Clicking a Mermaid diagram to edit its source, with the rendered diagram updating as a new node is typed

Keyboard shortcuts

Olive's named editing commands appear under Olive in VS Code's Keyboard Shortcuts editor (⌘K ⌘S on macOS, Ctrl+K Ctrl+S on Windows and Linux). You can search for, change or remove their bindings there.

Action macOS Windows / Linux
Undo ⌘Z Ctrl+Z
Redo ⇧⌘Z or ⌘Y Ctrl+Shift+Z or Ctrl+Y
Bold ⌘B Ctrl+B
Italic ⌘I Ctrl+I
Strikethrough ⇧⌘S Ctrl+Shift+S
Inline code ⌘E Ctrl+E
Edit link ⌘K Ctrl+K
Inline math ⇧⌘E Ctrl+Shift+E
Paste as plain text ⇧⌘V Ctrl+Shift+V
Find ⌘F Ctrl+F
Find next ⌘G F3
Find previous ⇧⌘G Shift+F3
Replace ⌥⌘F Ctrl+H

Block formatting

Action macOS Windows / Linux
Paragraph ⌘⌥0 Ctrl+Alt+0
Heading 1–6 ⌘⌥1–⌘⌥6 Ctrl+Alt+1–Ctrl+Alt+6
Numbered list ⇧⌘7 Ctrl+Shift+7
Bulleted list ⇧⌘8 Ctrl+Shift+8
Quote ⇧⌘B Ctrl+Shift+B
Code block ⌘⌥C Ctrl+Alt+C

Some keys are part of the editing surface rather than global commands: Shift+Enter inserts a hard line break, ⌘⇧↑ / Ctrl+Shift+↑ and ⌘⇧↓ / Ctrl+Shift+↓ move the current block or the selected blocks, Option/Alt+↑ and Option/Alt+↓ move table rows, and Option/Alt+← and Option/Alt+→ move table columns.

Moving a table column with Option+Right — every row moves together

macOS Control-key navigation

On macOS, Olive preserves the familiar Emacs-style text navigation shortcuts, including across custom editing surfaces such as math popups, tables, toggles and command menus.

Keys Movement
Ctrl+B / Ctrl+F One character left / right
Ctrl+P / Ctrl+N One line or menu item up / down
Ctrl+A / Ctrl+E Beginning / end of the line or menu
Ctrl+G Cancel an open menu, popup or drag

These Control-key bindings are macOS-only. On Windows and Linux, Olive leaves the same key combinations available to VS Code and the operating system.

Markdown autoformat

Olive converts Markdown syntax into formatting as you type. Inline patterns convert as soon as you finish them; block patterns convert at the start of a line, when you type the space that follows them.

Bold, inline code and LaTeX math forming the moment each Markdown pattern is completed, then a selected word turned into inline math from the selection toolbar

Inline Result
**bold** or __bold__ bold
*italic* or _italic_ italic
~~strikethrough~~ strikethrough
`code` inline code
$x$ inline math
$$ in the middle of a line an empty inline formula, ready to edit

*, ~~ and ` convert anywhere in a line, including directly after a Japanese character or any other letter. _ and __ follow CommonMark and convert only at the start of a line or after a space, so snake_case_name is left alone.

At the start of a line Result
# to ###### Heading 1–6
- , * , + Bulleted list
1. Numbered list
[ ] or [x] inside a list item Task list item
> Quote
> [!note] at the start of a quote Callout (GitHub-style alert)
```lang or ~~~lang Code block
---, *** , ___ Horizontal rule
$$ in an empty paragraph Math block

--- converts on its own; *** and ___ need the trailing space.

To keep what you typed instead, press Backspace immediately after a conversion — it puts the literal characters back.

Markdown that Olive does not understand

Olive never silently drops or rewrites content. Anything it cannot model as rich text is kept exactly as written, so the file round-trips unchanged and a file you open and save without editing is byte-identical.

Footnotes ([^1]), raw HTML blocks, paragraphs containing inline HTML and callouts nested inside other callouts are shown as an explicit source block, so you can see what Olive is not editing for you and edit it as Markdown in place. A few constructs Olive has no model for, such as :::note container directives and definition lists, are shown as ordinary paragraphs instead: they are preserved exactly as written, but Olive does not mark them as unsupported.

Not supported yet

  • Untrusted workspaces and virtual workspaces — Olive is disabled in both.
  • Remote / SSH / WSL / Dev Containers — untested in this release. It may work, but nothing has been verified.

Data handling

Olive makes no network requests and collects no telemetry. It reads and writes only the Markdown files and images in your workspace, through VS Code's own document APIs.

Requirements

VS Code 1.95 or later.

Feedback

Olive is an early release. Bugs, feature requests and questions go to github.com/mohashii/olive-feedback — a public issue tracker with no extension source in it. An FAQ and troubleshooting notes live there too.

Bug reports are especially useful when they include the Markdown that broke — anything that renders or saves incorrectly, or conflicts with other extensions. Please keep confidential documents out of public issues, and report security problems through private reporting rather than an issue.

License

Proprietary; see LICENSE.md. Olive is currently provided free of charge, and versions distributed free of charge remain usable free of charge. Bundled open-source components and their licenses are listed in THIRD-PARTY-NOTICES.md.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft