yzhang-gh / vscode-markdown

Markdown All in One
https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one
MIT License
2.93k stars 326 forks source link
markdown vscode

Markdown Support for Visual Studio Code

version installs GitHub Workflow Status GitHub stars GitHub Contributors

All you need for Markdown (keyboard shortcuts, table of contents, auto preview and more).

Note: VS Code has basic Markdown support out-of-the-box (e.g, Markdown preview), please see the official documentation for more information.

Table of Contents

Features

Keyboard shortcuts

toggle bold gif
(Typo: multiple words)

check task list

See full key binding list in the keyboard shortcuts section

Table of contents

toc

List editing

on enter key

on tab/backspace key

fix ordered list markers

Note: By default, this extension tries to determine indentation size for different lists according to CommonMark Spec. If you prefer to use a fixed tab size, please change the list.indentationSize setting.

Print Markdown to HTML

GitHub Flavored Markdown

Math

math

Please use Markdown+Math for dedicated math support. Be sure to disable math.enabled option of this extension.

Auto completions

Tip: also support the option completion.root

Others

Available Commands

Keyboard Shortcuts

Table | Key | Command | | ---------------------------------------------------------------- | -------------------------------- | | Ctrl/Cmd + B | Toggle bold | | Ctrl/Cmd + I | Toggle italic | | Alt+S (on Windows) | Toggle strikethrough1 | | Ctrl + Shift + ] | Toggle heading (uplevel) | | Ctrl + Shift + [ | Toggle heading (downlevel) | | Ctrl/Cmd + M | Toggle math environment | | Alt + C | Check/Uncheck task list item | | Ctrl/Cmd + Shift + V | Toggle preview | | Ctrl/Cmd + K V | Toggle preview to side | 1. If the cursor is on a list/task item without selection, strikethrough will be added to the whole item (line)

Supported Settings

Table | Name | Default | Description | | ---------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------ | | `markdown.extension.completion.respectVscodeSearchExclude` | `true` | Whether to consider `search.exclude` option when providing file path completions | | `markdown.extension.completion.root` | | Root folder when providing file path completions (It takes effect when the path starts with `/`) | | `markdown.extension.italic.indicator` | `*` | Use `*` or `_` to wrap italic text | | `markdown.extension.bold.indicator` | `**` | Use `**` or `__` to wrap bold text | | `markdown.extension.katex.macros` | `{}` | KaTeX macros e.g. `{ "\\name": "expansion", ... }` | | `markdown.extension.list.indentationSize` | `adaptive` | Use different indentation size for ordered and unordered list | | `markdown.extension.list.toggle.candidate-markers` | `[ "-", "*", "+", "1.", "1)" ]` | Use a array for toggle ordered list marker e.g. `["*", "1."]` | | `markdown.extension.orderedList.autoRenumber` | `true` | Auto fix list markers as you edits | | `markdown.extension.orderedList.marker` | `ordered` | Or `one`: always use `1.` as ordered list marker | | `markdown.extension.preview.autoShowPreviewToSide` | `false` | Automatically show preview when opening a Markdown file. | | `markdown.extension.print.absoluteImgPath` | `true` | Convert image path to absolute path | | `markdown.extension.print.imgToBase64` | `false` | Convert images to base64 when printing to HTML | | `markdown.extension.print.includeVscodeStylesheets` | `true` | Whether to include VS Code's default styles | | `markdown.extension.print.onFileSave` | `false` | Print to HTML on file save | | `markdown.extension.print.theme` | `light` | Theme of the exported HTML | | `markdown.extension.print.validateUrls` | `true` | Enable/disable URL validation when printing | | `markdown.extension.syntax.decorations` | `true` | Add decorations to ~~strikethrough~~ and `code span` | | `markdown.extension.syntax.decorationFileSizeLimit` | 50000 | Don't render syntax decorations if a file is larger than this size (in byte/B) | | `markdown.extension.syntax.plainTheme` | `false` | A distraction-free theme | | `markdown.extension.tableFormatter.enabled` | `true` | Enable GFM table formatter | | `markdown.extension.toc.slugifyMode` | `github` | Slugify mode for TOC link generation (`vscode`, `github`, `gitlab` or `gitea`) | | `markdown.extension.toc.omittedFromToc` | `{}` | Lists of headings to omit by project file (e.g. `{ "README.md": ["# Introduction"] }`) | | `markdown.extension.toc.levels` | `1..6` | Control the heading levels to show in the table of contents. | | `markdown.extension.toc.orderedList` | `false` | Use ordered list in the table of contents. | | `markdown.extension.toc.plaintext` | `false` | Just plain text. | | `markdown.extension.toc.unorderedList.marker` | `-` | Use `-`, `*` or `+` in the table of contents (for unordered list) | | `markdown.extension.toc.updateOnSave` | `true` | Automatically update the table of contents on save. |

FAQ

Q: Error "command 'markdown.extension.onXXXKey' not found"

Q: Which Markdown syntax is supported?

For other Markdown syntax, you need to install the corresponding extensions from VS Code marketplace (e.g. Mermaid diagram, emoji, footnotes and superscript). Once installed, they will take effect in VS Code and also the exported HTML file.

Q: This extension has overridden some of my key bindings (e.g. Ctrl + B, Alt + C)

You can easily manage key bindings with VS Code's Keyboard Shortcuts editor. (Commands provided by this extension have prefix markdown.extension.)

Q: The extension is unresponsive, causing lag etc. (performance issues)

From experience, there is a good chance that the performance issues are caused by other extensions (e.g., some spell checker extensions).

This can be verified if you try again with all other extensions disabled (execute Developer: Reload with Extensions Disabled or Extensions: Disable All Installed Extensions for this Workspace in the VS Code command Palette) and then enable this extension.

To find out the root cause, you can install our development build (debug.vsix) and create a CPU profile following this official instruction from the VS Code. And then please open a GitHub issue with that profile (.cpuprofile.txt) attached.

Changelog

See CHANGELOG for more information.

Latest Development Build

Download it here, please click the latest passing event to download artifacts.

There are two versions: markdown-all-in-one-*.vsix is the regular build, while debug.vsix is used to create a verbose CPU profile.

To install, execute Extensions: Install from VSIX... in the VS Code Command Palette (ctrl + shift + p)

Contributing

Special thanks to the collaborator @Lemmingh and all other contributors.


Related

More extensions of mine