Markhov
A quiet, minimal live preview editor for Markdown in VS Code. Formatting renders right where you type, and the markup only shows up around the cursor.

Why Markhov
- Write in the preview. Headings, emphasis, lists, tasks, quotes, tables, images and code blocks render in place. Move the cursor into any of them and the Markdown appears, so you can edit it directly. Heading marks hang in the margin, so text never jumps around.
- Opens only when you ask. Markdown files keep opening in the normal text editor. Press Cmd+Shift+M to switch the current tab to Markhov in place, and press it again to go back. Unsaved changes come along.
- Your file stays your file. Markhov edits the text itself and never rewrites it, so there are no surprise reformats and git diffs stay clean. Undo, save, hot exit and outside changes (git, formatters, other editors) all just work.
- Standard Markdown. CommonMark plus GitHub Flavored Markdown: task lists, tables, strikethrough, autolinks and YAML front matter. No custom syntax.
- Clean PDF export. One click saves a PDF next to your file, with the same typography, page numbers and no browser headers.

Getting started
- Open any
.md file.
- Press Cmd+Shift+M (Ctrl+Shift+M on Windows and Linux), or click the preview icon in the editor title bar.
- Press it again to return to the raw text.
You can also right-click a Markdown file in the Explorer and choose Open with Markhov. To always open Markdown files in Markhov, add this to your settings:
"workbench.editorAssociations": { "*.md": "markhov.editor" }
Editing
| Action |
macOS |
Windows and Linux |
| Switch between Markhov and raw text |
Cmd+Shift+M |
Ctrl+Shift+M |
| Bold |
Cmd+B |
Ctrl+B |
| Italic |
Cmd+I |
Ctrl+I |
| Inline code |
Cmd+E |
Ctrl+E |
| Strikethrough |
Cmd+Shift+X |
Ctrl+Shift+X |
| Link |
Cmd+K |
Ctrl+K |
| Heading 1 to 6 |
Cmd+Alt+1 … 6 |
Ctrl+Alt+1 … 6 |
| Back to paragraph |
Cmd+Alt+0 |
Ctrl+Alt+0 |
| Add or check a task |
Cmd+Enter |
Ctrl+Enter |
| Nest or unnest a list item |
Tab / Shift+Tab |
Tab / Shift+Tab |
| Find and replace |
Cmd+F |
Ctrl+F |
| Open a link |
Cmd+click |
Ctrl+click |
Lists behave the way you expect: Enter continues a list (numbers count up, tasks start unchecked), Enter on an empty item leaves the list, and Backspace at the start of an item removes its bullet. Click a checkbox to toggle it, or click a table cell to edit its source.
The Cmd+Shift+M binding only applies while a Markdown editor has focus; everywhere else it still toggles the Problems panel. You can change it in Keyboard Shortcuts by searching for markhov.toggle.
PDF export
Click the PDF icon in the editor title bar, or run Markhov: Export to PDF from the Command Palette or the Explorer context menu. The PDF is saved next to the Markdown file with the same name, including any unsaved edits.
Export uses a Chromium-based browser in the background (Google Chrome, Chromium, Microsoft Edge or Brave), which gives the same text rendering as a browser and full support for every language, tables and code highlighting. No browser window opens. If your browser is installed in an unusual place, set markhov.pdf.chromePath.
Settings
| Setting |
Default |
Description |
markhov.appearance |
auto |
light, dark, or auto to follow the VS Code theme. |
markhov.colors |
bear |
bear for the Markhov palette, vscode to use the colors of your VS Code theme. |
markhov.fontSize |
16 |
Base font size in pixels. |
markhov.lineHeight |
1.65 |
Line height of body text. |
markhov.maxWidth |
720 |
Maximum width of the text column in pixels. |
markhov.fontFamily |
system font |
Font family for body text. |
markhov.pdf.pageSize |
A4 |
A4 or Letter. |
markhov.pdf.open |
none |
Open the PDF after exporting: none, default (system PDF app) or browser. |
markhov.pdf.chromePath |
detected |
Path to the browser used for PDF export. |
Good to know
- A single line break is shown as a line break, and PDF export keeps it that way. Some other renderers, such as GitHub, join such lines into one paragraph.
- Inside Markhov, Cmd+K inserts a link, so VS Code chords that start with Cmd+K are not available while the editor has focus.
- With Remote SSH, WSL or containers, PDF export needs a browser on the remote machine.
Development
npm install
npm run build # or: npm run watch
npm test # unit tests
npm run test:integration
Press F5 in VS Code to launch an Extension Development Host. To work on the editor in a browser, serve the project root and open harness/index.html.
License
MIT