写技术文档的人,十有八九都绕不过 Markdown。但很多人对 VS Code 写 Markdown 的印象,还停留在“一个编辑器加一个预览窗口”的阶段:左边写语法,右边看效果,仅此而已。最近 VS Code 在 Markdown 编辑体验上的变化,其实已经超出了这个基础认知,尤其是围绕文档结构、图片管理、表格编辑、快捷操作这些日常写作高频场景,内置能力和插件生态都在快速补齐。这篇文章就从实际写作场景出发,把 VS Code 中新的 Markdown 编辑功能拆开讲清楚:哪些是开箱即用的,哪些需要配插件,哪些细节最容易踩坑,以及怎样用 VS Code 搭出一条完整的 Markdown 写作工作流。
先说结论:VS Code 的 Markdown 编辑体验,正在从“能用”走向“好用”。它不再是那种只能写 README 的附属功能,而是已经具备成为主力 Markdown 编辑器的条件。对技术博主、文档工程师、开源项目维护者来说,这个变化值得重新审视一次。
1. 为什么 VS Code 值得作为 Markdown 主力编辑器
很多人写 Markdown 的第一选择是 Typora、Obsidian 这类专用工具。它们的优势是开箱即用、界面简洁,但到了工程化写作场景,问题就暴露出来了:文档和代码仓库脱节、图片资源管理混乱、批量替换和版本管理困难、写技术文档时还要在编辑器和 IDE 之间来回切换。
VS Code 的优势在于它天然处在“开发环境”里。你写代码的地方、跑 Git 的地方、看终端日志的地方,同时也是你写文档的地方。这意味着 Markdown 写作不再是孤立行为,而是可以和代码评审、版本控制、自动化脚本放在同一条流水线上。
从实际体验来看,VS Code 的 Markdown 编辑功能有四个明显的迭代方向:
- 从“纯文本编辑”向“结构化编辑”演进。大纲视图、折叠、面包屑导航,让长文档的组织成本大幅降低。
- 从“手动写语法”向“智能辅助”演进。表格格式化、任务列表快捷键、自动补全,降低语法记忆负担。
- 从“单一本地文件”向“工程化管理”演进。图片路径、工作区多根目录、Git 集成,让文档可以作为工程的一部分被管理。
- 从“编辑器”向“发布流水线起点”演进。配合脚本可以完成 Markdown 转 HTML、转 PDF、转 Word 等后续工作。
这篇文章会围绕这四条线展开,重点讲清楚哪些功能是内置的、哪些需要插件、每个环节的实操方法是什么。
如果你属于下面这几类人,这篇文章尤其值得看完:
- 经常在代码仓库里写 README、技术方案、接口文档的开发者。
- 想从 Typora 等专用编辑器迁移到 VS Code,但怕体验降级的人。
- 已经在用 VS Code 写 Markdown,但只用了预览功能,想了解全部能力的人。
- 被图片路径、表格复制、目录生成、换行规则这些细节折磨过的人。
2. Markdown 在 VS Code 中的基础概念与核心机制
在进入功能拆解之前,有几个概念需要先理清。因为这些概念决定了你会不会用、能不能用好 VS Code 的 Markdown 编辑能力。
2.1 Markdown 不是“纯文本”,它是“带结构的纯文本”
Markdown 的底层语法极其简单:井号是标题、星号是强调、减号是列表。但“简单”恰恰是双刃剑。当文档超过三百行,当标题层级超过三层,纯靠肉眼去盯语法已经不够了——你真正需要的是“结构视图”。
VS Code 对 Markdown 的结构支持体现在三个层面:
- 行号左侧的折叠箭头:可以按标题层级折叠内容块,快速收起不关心的章节。
- 资源管理器中的大纲(Outline)面板:列出当前文档的所有标题和符号,点击即可跳转。
- 编辑器顶部的面包屑(Breadcrumbs):显示当前光标所在的标题层级路径。
这三个功能共同构成了一条从“文件视角”到“章节视角”的导航链路。写长文时,你不需要从头滚动到尾,只需要打开大纲,就能看到整个文档的骨架。
2.2 编辑器与预览的关系:双向绑定
VS Code 的 Markdown 预览不是静态渲染,它和编辑器之间是双向绑定的:
- 编辑器中移动光标,预览会自动滚动到对应位置。
- 预览中点击内容,编辑器会跳转到对应的 Markdown 源码。
这个机制是 VS Code 内置的,不需要任何插件。打开方式是右上角的“打开侧边预览”图标,或者快捷键。
这里容易被忽略的一个点是:预览本质上是一个 HTML 页面,并且支持自定义 CSS。你可以在用户设置里指定一个 CSS 文件,覆盖默认的预览样式。这意味着你完全可以让预览效果贴近你最终发布平台(比如博客主题、公司文档站点)的视觉风格。
2.3 Markdown 语法范围的边界
VS Code 内置的 Markdown 支持是 CommonMark 的一个超集,同时还加入了几个常用扩展:
- 表格(GFM 风格)
- 任务列表(
- [ ]) - 删除线
- 代码块围栏(```
- 数学公式(KaTeX 渲染)
- emoji 短代码(如
:smile:)
这意味着大部分常用语法都不需要插件支持。真正需要插件补齐的,是“编辑效率”层面的能力,而不是“语法支持”层面的能力。很多初学者误以为装了某个 Markdown 插件才能写表格,其实 VS Code 内置已经支持,这个认知需要纠正一下。
3. 新版 Markdown 编辑功能的核心变化
不同版本 VS Code 对 Markdown 编辑功能的增强侧重点不同。从近几个版本的迭代方向来看,有几个能力是值得重点关注的。
3.1 更完善的标题编辑体验
之前版本里,Markdown 标题编辑有一个很麻烦的地方:写完标题后,如果觉得层级不对,需要手动去数井号个数。现在 VS Code 的 Markdown 编辑器对标题的识别更智能了,主要体现为:
- 标题行在折叠时显示更清晰的层级缩进。
- 面包屑导航会显示当前标题的完整路径。
- 配合大纲面板,可以快速定位到任意层级的标题。
另外,热词里提到一个很典型的问题:“markdown修改标题之后 没有#了 如何改回来”。这个问题的本质是:在纯文本模式下,某些快捷键(比如Ctrl+Shift+P执行“切换标题”命令)会把当前行变成标题,但如果误触了“切换为纯文本段落”,井号就会消失。解决思路是:不要手动去补井号,而是用命令面板里的“切换标题等级”功能。
3.2 智能粘贴与图片处理
图片是 Markdown 写作中最容易翻车的环节。VS Code 近期的编辑功能改进中,图片粘贴体验是一个重点方向。
现在的 VS Code 已经支持直接粘贴剪贴板中的图片到 Markdown 文件。粘贴时,VS Code 会做这几件事:
- 在文档中插入一个标准的 Markdown 图片语法。
- 将图片文件保存到指定目录(默认为当前工作区的某个相对路径)。
- 自动生成一个相对路径,保证移动整个文件夹后图片依然有效。
这个功能在“设置”中搜索markdown.copyFiles.destination可以配置。比如,你可以把图片统一放到assets/images目录:
{ "markdown.copyFiles.destination": { "**/*.md": "assets/images/${documentBaseName}/" } }这意味着你不再需要手动去创建图片目录、手动写相对路径、手动重命名文件。粘贴一张截图,剩下的工作编辑器都做了。
需要注意的是,图片粘贴功能的底层依赖是 VS Code 的资源管理器(Explorer)和工作区机制。如果你只是用 VS Code 打开了一个孤立文件,而没有打开任何文件夹,粘贴图片时会提示找不到合适的位置。这也是很多人“明明设置了却没用”的常见原因。
3.3 表格编辑的体验提升
Markdown 表格是很多人最头疼的语法。原因很简单:表格的竖线对齐全凭手算,一旦单元格内容长度变化,整个表格就歪了。
VS Code 内置的 Markdown 表格支持,结合部分插件,可以做到:
- 自动格式化表格宽度,让竖线对齐。
- 自动插入新行和新列。
- 在表格内按
Tab快速跳转到下一个单元格。
热词里提到的“markdown表格复制”问题,也在这里一并说明:Markdown 表格的源码复制非常容易因为空格和竖线不一致导致粘贴后变形。更稳妥的做法是:在预览界面复制渲染后的表格,而不是复制源码。
3.4 目录和大纲:长文导航的利器
“vscode中如何把markdown文件的目录显示出来”是热词里出现频次很高的问题。这个问题的答案是:大纲面板 + 自定义 Markdown 目录生成。
在 VS Code 中显示目录有两个层次:
第一层:编辑器内置大纲。点击左侧活动栏的“大纲”图标,就能看到当前 Markdown 文件的标题结构,按层级缩进排列,点击任意标题即可跳转。这个功能不需要任何 Markdown 插件。
第二层:在文档正文中插入目录。如果你希望生成的 HTML 或 PDF 里自带目录,需要在文档中显式插入目录标记。这通常需要依赖插件,比如 Markdown All in One 提供的“插入目录”命令。
对于超长文档(比如万字以上的技术白皮书),建议两层同时使用:编辑阶段用大纲导航,发布阶段用自动生成的目录。
3.5 数学公式与代码块强化
对于技术写作来说,代码块和数学公式是不可回避的内容类型。VS Code 对这两类的支持也在持续增强。
数学公式方面,VS Code 使用 KaTeX 渲染$...$和$$...$$包裹的 LaTeX 语法。在预览中会直接渲染成数学排版,不需要额外插件。
代码块方面,VS Code 的 Markdown 代码块支持语言标识、行号显示、语法高亮,并且在预览中使用了与编辑器一致的语法高亮引擎。写接口文档时,代码块的视觉一致性是很重要的体验细节。
4. 环境准备:搭好一个可用的 Markdown 写作环境
在开始功能实测之前,先把环境准备好。这部分不会涉及太多高深配置,但正确的起步姿势能省掉后面很多麻烦。
4.1 安装 VS Code
如果还没有安装 VS Code,直接到官网下载对应操作系统的安装包即可。下载后进行默认安装。
安装完成后,建议在命令行中验证一下:
code --version如果输出的版本信息正常,说明 VS Code 已加入 PATH 环境变量。
安装完成后,设置里搜索并确认以下两个基础项:
{ "editor.minimap.enabled": true, "editor.wordWrap": "on" }wordWrap: on是为了让 Markdown 长段落自动换行,否则你会看到一行顶到屏幕尽头,体验很糟糕。
4.2 建议安装的 Markdown 插件
虽然 VS Code 内置能力已经不错,但以下几个插件能显著提升编辑效率。按优先级排序:
| 插件名称 | 作用 | 优先级 |
|---|---|---|
| Markdown All in One | 快捷键、目录生成、表格格式化、任务列表辅助 | 高 |
| Markdown Preview Enhanced | 更强的预览、导出 PDF/HTML、自定义样式 | 高 |
| Paste Image | 粘贴图片并自动保存到指定目录 | 中 |
| markdownlint | Markdown 语法规范检查 | 中 |
安装方法:
code --install-extension yzhang.markdown-all-in-one code --install-extension shd101wyy.markdown-preview-enhanced code --install-extension mushan.vscode-paste-image code --install-extension davidanson.vscode-markdownlint插件的版本迭代较快,具体功能以当前安装版本为准,本文重点讲解通用用法。
4.3 工作区准备
Markdown 写作建议在“文件夹”模式下进行,而不是“单文件”模式。原因是很多功能(图片粘贴、大纲、多文件跳转)依赖工作区上下文。
推荐的项目结构如下:
docs/ ├── assets/ │ └── images/ ├── articles/ │ ├── 2025-vscode-markdown.md │ └── 2025-git-workflow.md └── README.md用 VS Code 打开docs文件夹,然后新建articles/2025-vscode-markdown.md开始写作。
5. 核心操作步骤:从新建文件到完整编辑
下面按一条完整的写作路径,逐步演示 VS Code 中 Markdown 编辑功能怎么用。每一步都有明确的动作和预期结果。
步骤一:新建 Markdown 文件
在资源管理器中,右键点击目标目录,选择“新建文件”,输入文件名并以.md结尾:
touch articles/2025-vscode-markdown.md或者直接在 VS Code 里新建文件,保存时命名为2025-vscode-markdown.md。
打开文件后,VS Code 会自动识别 Markdown 语言模式。此时你可以开始编写标题、正文、代码块等内容。
步骤二:编写基础文档结构
在文件中写入以下内容,作为功能演示的基础文档:
--- title: VS Code Markdown 编辑功能实测 date: 2025-01-15 --- # 一级标题:Markdown 编辑功能总览 ## 二级标题:内置能力 这是正文段落,用于演示 **加粗**、*斜体*、`行内代码` 等效果。 ### 三级标题:列表 - 项目一 - 项目二 - 子项目 ### 三级标题:表格 | 功能 | 状态 | 说明 | | --- | --- | --- | | 预览 | 内置 | 实时同步滚动 | | 大纲 | 内置 | 标题层级导航 | | 目录生成 | 插件 | Markdown All in One | ## 二级标题:代码块演示 ```python def hello(): print("Hello VS Code Markdown")写完这段内容后,右侧预览窗口会自动渲染。如果预览没有自动打开,使用快捷键 `Ctrl+K V` 打开侧边预览。 ### 步骤三:使用大纲导航长文档 当文档内容变多以后,单靠滚动查找章节效率太低。 点击左侧活动栏的“大纲”图标,你会看到当前文档的所有标题,按层级展开。点击任意标题,编辑器光标会跳到对应位置。 注意:大纲面板显示的是 VS Code 解析出的文档符号结构,不是插件的功能。这意味着你即使没有安装任何插件,也能获得基础的文档导航能力。 ### 步骤四:粘贴图片并自动保存 在编辑器中,按 `Ctrl+V` 粘贴剪贴板中的截图。VS Code 会弹出询问: 如果你设置了 `markdown.copyFiles.destination`,图片会自动保存到配置的目录,并在光标处插入图片语法。 配置方式是在设置 JSON 中加入: ```json { "markdown.copyFiles.destination": { "**/*.md": "assets/images/${documentBaseName}/" } }在这个配置下,如果当前文件是articles/2025-vscode-markdown.md,图片会保存到docs/assets/images/2025-vscode-markdown/目录,并自动生成相对路径。
这是目前 VS Code 内置 Markdown 编辑功能中比较省心的能力之一,对于经常在文档中插截图的场景非常实用。
步骤五:格式化表格
Markdown 表格经常因为单元格内容长度变化而对不齐,使用 Markdown All in One 插件的“格式化表格”命令可以自动对齐。
将光标放在表格内,打开命令面板(Ctrl+Shift+P),输入:
Markdown: Format Table执行后,表格会自动按最大宽度对齐,无需手动添加空格。
步骤六:生成文档目录
在需要插入目录的位置,执行 Markdown All in One 的“插入目录”命令:
Markdown: Create Table of Contents插件会根据当前文档的标题结构,自动生成带锚点链接的目录列表。文档更新后,可以重新执行该命令刷新目录。
6. 效果验证与结果确认
完成上述步骤后,可以通过以下几个方面确认环境配置和功能生效:
6.1 预览渲染是否正常
打开预览后,如果标题、列表、代码块、表格都正确渲染,说明基础 Markdown 支持正常。
常见异常有两种:
- 预览空白:检查文件扩展名是否为
.md,以及语言模式是否为 Markdown。如果语言模式错误,按Ctrl+K M手动切换。 - 代码块没有高亮:检查代码块起始行的语言标识是否正确,如
```python不能写成```python后有空格。
6.2 目录是否成功生成
如果使用了 Markdown All in One 的目录生成功能,目录应该有对应的锚点链接。点击目录中的任意条目,页面应滚动到对应标题位置。
如果链接失效,大概率是文档中存在重复标题。GitHub 风格的 Markdown 会为重复标题自动追加-1、-2后缀,而目录生成器的行为可能不同,需要手动调整。
6.3 图片是否出现在正确目录
粘贴图片后,到资源管理器中查看assets/images目录,确认图片文件已创建,路径与文档中的引用路径一致。
如果图片没有保存到预期目录,检查设置项markdown.copyFiles.destination是否被正确写入用户设置或工作区设置。
6.4 导出验证
如果安装了 Markdown Preview Enhanced,可以尝试导出 HTML:
在预览窗口中,右键点击,选择“导出 HTML”。导出后,用浏览器打开 HTML 文件,检查样式、代码高亮、图片引用是否正常。
导出恰好能解决热词里提到的“markdown转word工作流”问题:Markdown 先转 HTML,再用 Word 打开 HTML 另存为 docx,是兼容性较好的路子,推荐优先使用这种方法。
7. 常见问题与排查思路
结合日常使用中出现频率较高的问题,整理成下面的排查表。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 预览空白,没有渲染内容 | 文件语言模式不是 Markdown | 查看右下角语言模式 | 按Ctrl+K M切换为 Markdown |
| 粘贴图片提示“无法确定图片位置” | 未在文件夹模式下打开工作区 | 查看资源管理器是否显示文件夹结构 | 使用“打开文件夹”打开项目根目录 |
| 大纲不显示内容 | 文档中没有标题格式 | 检查文档是否使用#标题语法 | 为章节添加#标题 |
| 表格粘贴后格式错乱 | 复制的是源码而非渲染结果 | 在预览中右键复制 | 在预览界面复制表格内容 |
| 目录链接跳转失败 | 存在重复标题或特殊字符 | 检查目录锚点与标题的对应关系 | 人工修改重复标题,避免特殊字符 |
| 修改标题后井号消失 | 使用了段落切换命令 | 查看是否误触切换快捷键 | 使用“切换标题等级”命令重新设置 |
| markdownlint 报错 | 语法规范不符合默认规则 | 阅读错误信息定位具体行 | 按提示修正,或按团队要求调整规则 |
| 数学公式不渲染 | 使用了$但未注意空格 | 检查 KaTeX 对公式的边界要求 | 确保$与公式内容之间无多余空格 |
| 代码块无高亮 | 语言标识错误或缺失 | 检查代码块首行 | 补全语言标识,如```python |
8. 最佳实践与工程建议
如果要把 VS Code 真正作为 Markdown 主力编辑器,只了解功能按钮是不够的,还需要在工程层面形成自己的写作规范。
8.1 统一图片资源管理策略
图片路径混乱是 Markdown 工程最常见的灾难。建议统一遵守以下规则:
- 所有图片放在
assets/images/下,按文档名或日期分子目录。 - 图片命名使用
小写字母 + 连字符,如vscode-markdown-preview.png。 - 引用路径一律使用相对路径,禁止绝对路径。
- 涉及多端协作时,尽量使用相对路径,避免不同电脑上盘符不一致导致图片失效。
8.2 使用 markdownlint 统一文档规范
团队协作写文档时,不同人的写作习惯差异会导致文档风格极不统一。建议在项目根目录添加.markdownlint.json配置文件:
{ "MD013": { "line_length": 120 }, "MD024": { "siblings_only": true } }这样在 CI 中也可以执行 markdownlint 检查,从流程上保证文档质量。
8.3 将 Markdown 写作纳入版本管理
Markdown 最大的优势之一就是可以纳入 Git 版本管理。建议养成以下习惯:
- 每次修改文档时,提交信息遵循“文档类型 + 修改内容”的规范。
- 对图片资源目录单独建立维护规则,避免二进制文件无意义地频繁提交。
- 使用分支管理文章草稿,定稿后合并到主分支。
8.4 用任务列表管理写作进度
对于长文写作,可以在文章开头维护一个任务列表:
## 进度跟踪 - [x] 确定文章大纲 - [x] 完成内置功能测试 - [ ] 补充常见问题列表 - [ ] 检查导出效果 - [ ] 发布前复核VS Code 中点击任务列表的复选框可以快速切换完成状态。配合 Git 提交,写作进度和代码一样清晰可追踪。
8.5 预留自定义预览样式的空间
如果你的内容最终要发布到某个平台(比如博客、公司 Wiki),建议在项目中保存一份自定义预览 CSS。通过用户设置或工作区设置指定:
{ "markdown.styles": ["style/custom-preview.css"] }这样可以在写作阶段就预览到接近最终发布效果的样式,避免发布后才发现排版问题。
8.6 善用快捷键,减少鼠标依赖
高频使用的 Markdown 编辑快捷键如下:
| 操作 | 快捷键 |
|---|---|
| 打开侧边预览 | Ctrl+K V |
| 打开内置预览 | Ctrl+Shift+V |
| 加粗 | Ctrl+B |
| 斜体 | Ctrl+I |
| 命令面板 | Ctrl+Shift+P |
| 切换标题层级 | Ctrl+Shift+P输入“标题”后选择 |
快捷键的习惯一旦建立,写作速度会有明显提升。
9. 总结与后续学习方向
围绕“VS Code 中新的 Markdown 编辑功能”,这篇文章其实只讲了两件事:一是 VS Code 内置的 Markdown 编辑能力已经足够支撑日常写作;二是通过少量插件和工作区配置,它可以成为一套完整的 Markdown 工程化写作方案。
如果你只是想在 VS Code 里写 README,那么记住三个功能就够了:侧边预览、大纲面板、图片粘贴。如果你需要高频产出技术文档,建议认真配置 Markdown All in One、markdownlint 和自定义预览样式,把规范检查、目录生成、导出验证这些环节都纳入写作流程。
下一步值得探索的方向有三个:一是 Markdown 到 HTML/Word/PDF 的自动化导出流水线;二是和 Git 工作流耦合的文档版本管理策略;三是 Obsidian 等双链笔记工具与 VS Code 工作区结合的使用方式。技术写作越往后走,越会发现编辑器的选择只是起点,真正提升效率的是围绕编辑器建立的那套工作流。