Markdown for Writer

This extension offers a Obsidian/Notion-style WYSIWYG editor for Markdown(real-time inline preview and rich annotation), making it easier for humans to read and edit AI generated .md files directly in your codebase. It keeps documentation human-readable and version-controlled alongside code, while also enabling one-click export to Word for sharing with non-technical collaborators.
Features
Word Export
- Format preservation: Maintains headings, lists, tables, checkboxes, code blocks, and more
- Mermaid diagrams: Automatically converts mermaid charts to images (no setup required)
- Customizable styling: Configure fonts, colors, and sizes for different content types
- Two export options:
- "Export to Word" - Quick export to configured folder
- "Export to Word (Save As...)" - Choose destination with save dialog
- Commands: Open Command Palette (
Cmd+Shift+P / Ctrl+Shift+P) → "Export to Word" or "Export to Word (Save As...)"
Supported elements:
- Headings (H1-H6) → Word heading styles
- Text formatting (bold, italic, inline code)
- Lists (bullet, numbered, nested)
- Interactive checkboxes
- Tables with alignment
- Code blocks with syntax highlighting
- Mermaid diagrams → embedded images
- Links and images
- Blockquotes
- Table of contents
Styling configuration:
- Use a
word-export-config.json file in your workspace root or docs folder
- Or configure via VS Code settings
- Font family and size for body text and code
- Background colors for code blocks
- Table header colors
- Blockquote border colors
- Image dimensions
See Word Export Styling Guide for configuration details.
Interactive Checkboxes
- Smart Enter: Automatically continues checkbox lists when pressing Enter
- Click to toggle: Click on checkboxes to toggle their state
- Keyboard shortcut:
Cmd+Enter / Ctrl+Enter to toggle checkbox at cursor
- Visual feedback: Completed items (
[x]) show strikethrough styling
- Indent support: Use
Tab and Shift+Tab to adjust checkbox indentation
- Auto-format: Real-time column width adjustment while editing
- Japanese support: Accurate width calculation for CJK characters
- CSV conversion: Paste CSV data and press Enter to convert to Markdown table
- Smart navigation:
Cmd+Left/Right: Navigate within and between table cells
Tab/Shift+Tab: Move to next/previous cell
Rich Heading Display
- Hides
# symbols on non-focused lines for cleaner display
- Different colors and sizes for H1-H6 levels
- Shows raw Markdown syntax when editing
Smart Decorations
- Focus-aware: Shows raw Markdown on focused line, preview styling on others
- Inline styling:
**bold** and *italic* rendered inline
Table of Contents Generation
- Write
/toc to insert auto-generated table of contents
- Auto-updates when headings change
- Configurable heading level range
Cmd+Shift+T / Ctrl+Shift+T: Manual update
Auto-Numbered Lists
- Automatically renumbers ordered lists when you change indentation
- Press
Tab or Shift+Tab to adjust indent and auto-renumber
- Use "Renumber Ordered Lists" command for manual renumbering
Smart Editing
- Smart Home key (
Home / Cmd+Left): Toggle between content start and line start
- First press: Move to content start (after markers like
## or -)
- Second press: Move to line start (position 0)
- Works with headings, lists, and checkboxes
- Smart selection (
Shift+Cmd+Left): Progressive selection in lists and tables
- Context-aware select all (
Cmd+A):
- In table cells: Select cell content → row → document
- In code blocks: Select code → document
Keyboard Shortcuts
List Type Conversion
Convert between different list types with a single keystroke:
Cmd+Shift+5 / Ctrl+Shift+5: Convert to bullet list (- item)
Cmd+Shift+6 / Ctrl+Shift+6: Convert to numbered list (1. item)
Cmd+Shift+4 / Ctrl+Shift+4: Convert to checkbox (- [ ] task)
Cmd+Shift+0 / Ctrl+Shift+0: Convert to plain text
Cmd+Shift+7 / Ctrl+Shift+7: Cycle through formats (normal → checkbox unchecked → checkbox checked → bullet → normal)
Preserves indentation and supports multi-line selection.
List Operations
| Function |
Mac |
Windows/Linux |
| Continue list (Enter) |
Enter |
Enter |
| Increase indent |
Tab |
Tab |
| Decrease indent |
Shift+Tab |
Shift+Tab |
List Conversion
| Function |
Mac |
Windows/Linux |
| Bullet list |
Cmd+Shift+5 |
Ctrl+Shift+5 |
| Numbered list |
Cmd+Shift+6 |
Ctrl+Shift+6 |
| Checkbox |
Cmd+Shift+4 |
Ctrl+Shift+4 |
| Plain text |
Cmd+Shift+0 |
Ctrl+Shift+0 |
| Cycle formats |
Cmd+Shift+7 |
Ctrl+Shift+7 |
Checkbox Operations
| Function |
Mac |
Windows/Linux |
| Toggle checkbox |
Cmd+Enter |
Ctrl+Enter |
Cursor & Selection
| Function |
Mac |
Windows/Linux |
| Smart Home (toggle) |
Cmd+Left |
Home |
| Smart move right |
Cmd+Right |
End |
| Smart select left |
Shift+Cmd+Left |
Shift+Home |
| Update TOC |
Cmd+Shift+T |
Ctrl+Shift+T |
Word Export
| Function |
Mac |
Windows/Linux |
| Export to Word |
Command Palette |
Command Palette |
| Export to Word (Save As...) |
Command Palette |
Command Palette |
Commands:
Cmd+Shift+P / Ctrl+Shift+P → "Export to Word" (quick export to configured folder)
Cmd+Shift+P / Ctrl+Shift+P → "Export to Word (Save As...)" (choose destination)
Table Navigation
| Function |
Mac |
Windows/Linux |
| Next cell |
Tab |
Tab |
| Previous cell |
Shift+Tab |
Shift+Tab |
| Cell start/end |
Cmd+Left/Right |
Home/End |
Configuration
| Setting |
Default |
Description |
markdownForWriter.enablePreview |
true |
Enable preview decorations |
markdownForWriter.checkboxStyle |
icons |
Checkbox display style |
markdownForWriter.table.widthCalculation |
smart |
Table width calculation method |
markdownForWriter.table.japaneseCharWidth |
2.0 |
Width multiplier for Japanese characters |
markdownForWriter.toc.autoUpdate |
true |
Auto-update table of contents |
markdownForWriter.toc.minLevel |
1 |
Minimum heading level for TOC |
markdownForWriter.toc.maxLevel |
6 |
Maximum heading level for TOC |
markdownForWriter.export.destinationFolder |
word-exports |
Folder for exported Word files (relative or absolute path) |
Word Export Configuration
Destination Folder:
{
"markdownForWriter.export.destinationFolder": "word-exports"
}
- Use relative path (from workspace root):
"word-exports" or "docs/exports"
- Use absolute path:
"/Users/username/Documents/exports" (Mac/Linux) or "C:\\Users\\username\\Documents\\exports" (Windows)
Usage Example (Quick Export):
- Open a Markdown file
- Press
Cmd+Shift+P / Ctrl+Shift+P
- Type "Export to Word" and press Enter
- Click "Open File" in the notification to view the exported document
- Find exported files in the configured destination folder
Usage Example (Save As):
- Open a Markdown file
- Press
Cmd+Shift+P / Ctrl+Shift+P
- Type "Export to Word (Save As...)" and press Enter
- Choose destination folder and filename in the save dialog
- Click "Open File" in the notification to view the exported document
Requirements
Known Issues
- Complete WYSIWYG display is not possible due to VSCode Decorator API limitations
- Large files (10,000+ lines) may experience decoration update delays
- Some special Markdown syntax is not supported
Conflicts with Other Extensions
If Markdown All in One overrides the Enter key, you may need to disable its keybinding:
- Open keyboard shortcuts (
Cmd+K Cmd+S / Ctrl+K Ctrl+S)
- Search for
markdown.extension.onEnterKey
- Right-click and select "Remove Keybinding"
- Reload VSCode
Or add this to your keybindings.json:
{
"key": "enter",
"command": "-markdown.extension.onEnterKey",
"when": "editorTextFocus && editorLangId == markdown"
}
License
MIT
Credits
This extension is a fork and continuation of the original markdown-inline-preview extension. This fork aims to enhance the excellent foundation created by the original project. This extension focusing on improving the writer experience for tech workers who code and document in markdown and later export to Word or other formats to share with non-tech collaborators.
Contributing
Bug reports and feature requests are welcome on the MarkdownForWriter GitHub repository.
Changelog