使用 VSCode 搭建一个惊人的 Markdown Editor
本文使用 Visual Studio Code 构建了一个出色的,不逊色于其它任何一款的 Markdown 编辑器 环境。
本环境中实现了最基本的实时 Markdown 效果预览(所见即所得),语法规范(Markdown linting)以及基于 Md
原文档快速生成 Html
、Docx
和 PDF
文档的能力,并具有生成许多其他格式文档(jpeg、png)的潜力。当然你也可以基于此环境,并且结合个人需要进行适当的功能或插件扩展。
博主在安装配置使用过程中查阅了网络上很多的相关博文,也遇到过很多的问题,为了感谢学习过程中各位大佬的帮助以及分享给更多的新手使用,以作此文。文中如有表述不正确的地方,望各位大佬不吝指正~~~
话不多说,下面正式开始基于 VS Code 的 MarkDown 编译器环境搭建 >>>
Pre-installed Preparation
开始本博文学习之前,你需要有 必要的 VS Code && MarkDown 基础概念储备。其中,
更多 VS Code 相关内容,请关注博主 Visual Studio Code 博文系列 ↓↓↓↓↓↓↓↓
之一 >>> Visual Studio Code (VS Code) 你们都在用吗 ?
之三 >>> 玩转 VSCode 之配置 C/C++ 语言开发环境
之四 >>> 玩转 VSCode 之配置 Python 语言开发环境
更多 MarkDown 相关内容,请关注博主 Hexo 博文系列 ↓↓↓↓↓↓↓↓
>>> 打造沉浸式写作体验,你需要试试-Markdown-Editor
相信通过对上述内容的学习:你已经拥有了一个 VS Code 编辑器,并且已经掌握了基础的 MarkDown 语法规范。
熟悉 VS Code 开箱即用的 MarkDown 功能
VS Code 系统中内置了许多基本的,开箱即用的 MarkDown 功能,你无需安装任何插件就可以使用。
下面,让我们来探索一下这些作为你成为 MarkDown 专家的第一步。
编辑 MarkDown 项目
我们知道:VScode 中所有操作都是基于文件和文件夹的,但我们更多强调的是 VSCode 以文件夹的形式来组织管理工程项目(当然,你可以仅仅操作一个 md 文件)。
故,首先你可以创建一个单独用来存储所有 Markdown 文档的文件夹,这里我的为:MarkDownWSC
。你可以将其看作是 Markdown 文档的一个存储仓库,不只是单个文件的编辑,这对于一次性创建和编辑给定的许多文档都非常方便。
接下来,在 VS Code 中以打开文件夹(Ctrl + K + O
)的方式,打开 MarkDownWSC
文件夹。
然后创建一个 HelloWorld.md
的 Markdown 文件,并依据 Markdown 语法规范编辑以下内容:
1 | # Head 1 |
也就是说,和普通文本编辑器一样,VS Code 也支持 Markdown 文档的编辑。
同时,你可以借鉴前面我们在 VSCode 项目管理机制 中提到过的 单项目管理和配置,VS Code 也允许我们 创建 几个 跟当前文件夹或者跟 Markdown 项目有关的配置文件。在这些配置文件中,你可以进行和 Markdown 编辑、渲染、插件使用等有关的所有配置(使用文件夹设置
.vscode\settings.json
)。
尝试 Markdown 预览器
和普通文本编辑器不同的是,VS Code 系统还内置了一个 Markdown 的预览器,这可以帮助我们一边编辑 Markdown 文档内容,一边实时地预览效果。
VS Code 中,提供了两种预览方式:
[1] >>>> 通过快捷键 [Ctrl + Shift + V],单独打开一个 HTML
风格的 MarkDown 代码预览窗口,进行效果查看。
[2] >>>> 通过快捷键 [Ctrl + K V],来打开一个位于右侧的,侧边预览窗口。额外的,你可以在左侧窗格的 Markdown 文档中添加文本,并在右侧的 HTML
预览窗格中查看这些更改(推荐)。
Config User Snippets For MarkDown
对于编辑 Markdown 文档而言,User Snippets(代码片段)的使用可以极大的提高你的创作效率。
VS Code 中,你可以通过 >>>> 打开命令面板 [Ctrl + Shift + P] >>>> 选择 [Snippets: Configure User Snippets] >>>> 选择打开 [markdown.json (Markdown)] 文件,默认配置文件内容如下:
1 | { |
同时,你需要在项目组织目录 MarkDownWSC/.vscode
下的配置文件 settings.json
中开启 User Snippets 开关:
1 | { |
配置完成之后,如何自定义我们需要的 Snippets 呢?!!!事实上,在 markdown.json
上面有一大段注释的代码,提供了一个 Example 例子:
1 | "Print to console" >>>> 快捷语句的标题 |
你可以取消掉 Example 注释,通过
log
触发一下。
这里,我自己写了一些比较常用的 Markdown 片段供你参考:
1 | "Print to ```shell```":{ |
除了 VSCode 开箱即用的功能外,为了创建更好的 MarkDown 编辑环境,我们需要借助其它插件来为 VSCode 添加额外的 MarkDown 功能。
事实上,这和基于 VSCode 搭建各种语言(Python、C、C++)开发环境类似,配置 MarkDown 编辑环境就是 >>>> 组合安装、配置多种 MarkDown 相关插件的过程。
Description Of Optional Extensions
你在查阅资料的过程中,可能了解到很多的插件推荐安装博文。
这里,首先我会对网络上主流的 MarkDown 插件功能进行简单介绍,然后通过完成对不同插件的主要功能测试,结合使用效果,给出本文所采用的插件搭配推荐方案。
希望这一小节学习后,你可以自主决定 >>>> 你个人的 MarkDown(In VSCode)环境插件搭配方案 <<<< (这里更重要的是为你提供一种插件选择搭配的参考思路)
需要说明的,下文关于【插件评价】仅代表我个人的观点,是根据我个人的认知以及使用习惯来进行推荐的,不代表所有!!!
目前,网络上推荐安装的主流的 Markdown 插件有:
Markdown All in One
Extensions search >>>> Markdown All in One [Yu Zhang] >>>> 该插件功能如其名,集成了编辑 Markdown 文档时所需要的大部分功能(All in One)。
其主要功能包括:
- Markdown 样式快捷键支持
- 目录支持
- 列表自动化处理和表格的自动格式化
- 数学公式支持(KaTeX)
- 自动补全
可以看出,日常使用已经足够了,这也是伴随无数人在 VS Code 中最早体验的 Markdown 扩展了。
插件评价 >>>> 可作为 Markdown 环境基础插件(可选,功能较多,效果一般),搭配其它提供额外功能的 专用功能插件 使用。
Markdown Lint
Extensions search >>>> markdownlint [David Anson] >>>> Markdown 代码检查工具,用于规范编辑时的 Markdown 语法。
Markdown 默认的语法格式相当的宽泛,你可以下载并遵循这个插件的规范,极大程度上可以帮助你编辑出具有统一规范格式的 Markdown 文档。为 Markdown 开发提供便利,同时又大幅节省了自己制定语法规范的成本。
这里,我们给出 Markdown Lint 语法规范的 >>>> 警告信息表 <<<< 以便查询解决 ↓↓↓↓↓
1 | # MD001 - Heading levels should only increment by one level at a time |
事实上,有时候我们想要屏蔽 Markdown Lint 对某些警告信息的检测,你可以在用户配置文件(settings.json)中添加如下配置:
1 | "markdownlint.config": { |
| ================================== Split Line ===================================== |
插件评价 >>>> 必备插件(必选),以提供 Markdown 代码检查功能。
Markdown Shortcuts
Extensions search >>>> Markdown Shortcuts [Mdickin] >>>> 提供编写 Markdown 的高效快捷键支持,可以极大的帮助你提高 Markdown 编辑的效率。
通过特定的快捷键,你可以实现一键加粗、插入代码块、插入引用、添加不同等级标题等等 …….实现类似于 MarkdownPad、Typora、Aton 中的快捷操作,提高你的创作效率。
该功能和插件 Markdown All in One 子功能有重叠,其中少部分快捷键可能与 Markdown All in One
冲突,实际测试时以该插件为高优先级。当然了,你也可以自行修改快捷键设置来解决冲突。
但是需要考虑到的一个问题就是 >>>> 为了保证插件快捷键符合 “大众” 习惯,并且和 VS Code 系统自身快捷键兼容,快捷键设置成本增加 >>>> 快捷键记忆成本大幅度增加。
插件评价 >>>> 一般插件(可选),我个人更倾向于使用 Markdown 自身语法格式(可配合 User Snippets 使用)。
Markdown+Math
Extensions search >>>> Markdown+Math [Goessner] >>>> 使用 KaTeX 引擎,提供数学公式渲染(用于 Markdown 对公式进行正常显示)。
虽然和 Markdown All in One
子功能(Math)都是使用 KaTeX
引擎,但渲染效果更好。使用时需要将 Markdown All in One
的 math.enabled
取消掉。
插件评价 >>>> 一般插件(可选),更多的是在不支持数学公式的 Markdown 环境中作为补充插件或增强公式渲染使用。
Markdown Preview Github Styling
Extensions search >>>> Markdown Preview Github Styling [Matt Bierner] >>>> 提供 Github 样式的 Markdown 文档预览。
VS Code 开箱即用的 Markdown 预览器预览效果一般,该插件可以将其修改为 Github 风格的预览样式。
插件评价 >>>> 一般插件(可选),可在不支持更好预览模式的环境中提供 Github 样式的 Markdown 文档预览。
Markdown PDF && Pandoc
写好的 Markdown 文档是为了分享给其他人查看的,而其结果的展示需要使用专用编译器,或者安装特定的查看扩展。
那么,VS Code 中有没有相关的插件,可以将撰写好的 Markdown 文档转化为常见的 PDF
、Docx
文件,甚至是可在浏览器查看的 HTML
文档???这就能够结合 Markdown 编译的简便性和 PDF 等文档的通用性,使得文档编写和修改过程效率更高。
当然是有的,这里提供两种方法,你可以根据个人需求选择适合自己的方法:
1. Markdown PDF
2. VSCode-Pandoc + Pandoc
事实上,任何可以将 Markdown 文档输出为 HTML 格式的插件(例如:
Markdown All In One
&&Markdown+Math
)均可以实现 PDF 的导出(浏览器打开 HTML 格式页面后,选择存储为 PDF 即可)。但考虑到转化效果以及其它格式的转化,需要更进一步了解上面的两种方法。
下面分别来看两种方法的介绍、安装以及配置过程:
Markdown PDF
Extensions search >>>> Markdown PDF [Yzane] >>>> Convert Markdown to PDF(HTML && PNG && JPEG)。
尽管好多人都说,Markdown PDF 插件不支持 LaTex,导出效果不好,要弃坑云云….之类的。
但我仍然将其列为一个一般(可选)插件,这是出于相对于其它插件复杂的安装、配置以及对 VS Code 的性能影响,通过简单配置的 Markdown PDF 插件对于 Markdown 文档构建一个表现较好的 PDF(HTML && PNG && JPEG)已足够满足日常需要了。
1] >>>> 安装问题
Markdown PDF 插件专门用来为 Markdown 文档导出其 PDF 格式,需要搭配 Chrome 浏览器(实际上基于 Chromium 内核的浏览器都可以)。插件安装成功后,等待 Chromium 自动安装(可在右下角消息中心关注其下载状态)。
若下载失败,可以通过项目配置文件夹 MarkDownWSC/.vscode
下创建 settings.json
配置文件,来指定 Chrome 程序路径:
1 | { |
2] >>>> 导出 PDF
在 Md 文档中,点击右键,出现如下选项(根据需要选择):
1 | markdown-pdf: Export (settings.json) |
3] >>>> 导出优化
针对 “导出 PDF 格式不好” && “不支持公式显示” 的问题,做如下配置:
| >>>> 3.1 自定义 CSS 文件,优化导出 PDF 样式
Markdown PDF 插件直接导出 PDF 格式并不够美观,中文字体显示有很大问题。可以采用自定义 CSS 样式来美化导出 PDF。
你不会自定义 CSS 样式也没关系,你可从网络上下载大佬们写好的、非常漂亮的 CSS 格式文件(或直接复制内容到本地) >>>> Markdown CSS Theme,你可以先从仓库里面的 markdownX.css
文档系列中随意 Copy 一份,在项目文件夹 MarkDownWSC
下创建 css/markdownX.css
作为你个人的 CSS 样式文件。
然后,通过项目配置文件夹 MarkDownWSC/.vscode
下的 settings.json
配置 CSS 样式文件,内容如下:
1 | "markdown-pdf.styles": ["css/markdownX.css"] |
配置好后,你可以和默认导出 PDF 格式对比一下设置自定义 CSS 样式后的效果(不满意还可以使用其它 CSS,或真正的自定义你的 CSS 样式表)。
| >>>> 3.2. 数学公式显示优化
仅仅通过在 Markdown 文档中任意位置,引入 MathJax 标签 就可以正常显示了。标签内容如下:
1 | <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> |
重新生成 PDF 文件,可以发现文档中公式已经可以正常显示了。
| =========================== Split Line =========================== |
插件评价 >>>> 可选插件,通过简单安装、配置以实现一个具有良好表现(取决于自定义 CSS 样式表)的日常 [Markdown >> PDF] 转换工具。
VSCode-Pandoc + Pandoc
Extensions search >>>> vscode-pandoc [DougFinke] >>>> Renders markdown through pandoc。
如上,插件 vscode-pandoc 的功能是,仅仅是使用 Pandoc 工具来渲染 Markdown 文档。因此你还需要在当前操作系统中下载以及安装 Pandoc 文档转换工具。
Pandoc 不依赖 VS Code 编辑器,适用于多款支持 Pandoc 的编辑器(如:Typora 等)。它可以将文档 Markdown、LaTeX、HTML、Word docx 等多种标记格式之间相互转换,并支持输出 PDF、EPUB、HTML 幻灯片等多种格式。
1] >>>> Pandoc 安装
首先,你需要按照 Pandoc 安装页面 上的说明安装 Pandoc,这里提供了不同平台下 Pandoc 安装方法。
事实上,如果条件允许的话,你还可以使用 conda 或者 pip 进行 Pandoc 进行安装。
安装完成之后,可以在 DOS || Bash
中,使用 pandoc --version
命令来检查 Pandoc 是否可用。如果输出如下信息表示已安装配置成功;否者你需要在添加 [环境变量] 之后再进行尝试:
1 | pandoc.exe 2.12 |
2] >>>> 导出 HTML && Docx && PDF
| >>>> 2.1. DOS(Bash) Demo
Pandoc 安装完成之后就可以在命令行下正常使用了(不考虑 VSCode),我们先来看如何导出 >>>> HTML && Docx :
1 | 1. Markdown >>>> HTML |
来看如何导出 >>>> PDF :
1 | 2. Markdown >>>> PDF |
这是由于 Pandoc 生成 PDF 文件需要使用 PDF 排版工具或引擎(--pdf-engine=xelatex
),网络上推荐安装什么 MikTex
、TexLive
、CTex
,这有啥区别啊?!!事实上,他们都是 TeX 排版系统的发行版,都内置了常用的文档编译器(编译引擎):xelatex
、lualatex
、pdflatex
。我们需要确认的是:
- LaTeX 是安装在原生 Windows 里还是 WSL 里?
- 安装 TeXLive 还是 MiKTeX?
- 平时编译的时候使用哪个编译器?(XeLaTeX or LuaLaTeX or pdfLaTeX)
网络上一个大佬进行了相关的测试(传送门),可以作为我们选择的依据:
1 | # LaTeX配置安装大对比:TeXLive/MiKTeX、Windows/WSL;xelatex/lualatex/pdflatex 编译器的速度性能详细对比 |
TeXLive && MiKTeX 安装问题 >>>> 会涉及到宏包(.sty)安装 >>>> MikTex 支持在编译(文档渲染)过程中提示哪个 sty(宏包) 文件缺失,提示你下载,解决了所有宏包缺失后,才可以编译导出最终的 PDF 文档;而 TexLive 不支持在编译过程中下载缺失宏包,安装时就会把所有 sty 都下载下来。
MikTex 下载完成后,需要更新 MikTex Console(Win Search),更新后如果命令执行仍有错误信息,可以定位日志文件将其中错误的 log 都删除掉即可。安装成功后,你可以在
MiKTeX\miktex\bin\x64
目录下找到xelatex
、lualatex
、pdflatex
渲染工具。
再来看如何导出 >>>> PDF :
1 | 指定渲染引擎:--pdf-engine=xelatex |
如果 Markdown(test.md)文档中包含中文,虽然编译(渲染)过程中不再出现错误,但是会显示如下警告,并且编译好的 PDF 文件中并没有中文。
1 | [WARNING] Missing character: There is no 安 (U+5B89) in font [lmroman12-bold]:mapping=tex-text;! |
这是由于 xelatex
引擎默认字体不支持中文字符,添加字体设置参数:-V CJKmainfont=\"Microsoft YaHei\" -V geometry:margin=2.5cm
,然后再次尝试编译文档就 OK 了!!!
1 | Markdown >>>> PDF |
| >>>> 2.2. VSCode Demo
再来看,如何在 VS Code 中使用 vscode-pandoc
插件来管理 Pandoc 工具进行文档编译的。
我们整理【1. DOS(Bash) Demo】中进行过的配置,先在项目配置文件夹 MarkDownWSC/.vscode
下的 settings.json
中配置如下内容:
1 | { |
配置完成后,你可以通过在需要编译(渲染、或转换)的 Markdown 文档中的任意位置 >>>> 点击快捷键 [Ctrl + K P] >>>> 系统会提示如下:
1 | pdf Render as pdf document |
你可以根据你的需要,选择想要导出的类型(PDF && Docx && HTML)。
3] >>>> 导出优化
针对 “导出 PDF 格式不好” && “导出 HTML 报警 nonempty <title>
” 的问题,做如下说明:
| >>>> 3.1 空标题问题
标准输出时,你需要和标准文档一样正确设置一个标题,即 Markdown 文档中添加 YAML 格式的 front matter
,如下:
1 |
|
设置后,再次生成就不再产生 stderr:[WARNING] This document format requires a nonempty <title>...
警告了!!!
| >>>> 3.2 导出 PDF 格式不好
有这个问题,是由于我在使用时没有深入了解 Pandoc 工具如何自定义 PDF 的样式(对我来说,Markdown PDF 就完全够了),只是测试的话我采取了曲线救国的方式 >>>> 导出 HTML,然后浏览器中 Print
成 PDF(没有使用到 Pandoc 的精髓)。
导出 HTML 公式无法显示的问题,你可以参考:【[1] >>>> Markdown PDF】 >>>> 【1.3.2. 数学公式显示优化】。
事实上,你甚至可以使用 Pandoc 工具导出一个符合论文要求格式的 PDF 文档,功能非常强大!!!
| =========================== Split Line =========================== |
插件评价 >>>> 可选插件,功能强大的格式转换工具,可以渲染出具有严格格式要求的文档(例如:论文…),可以满足你所有的转换需要,但安装、配置过程比较复杂,使用以及学习成本较高,日常简单使用的话不推荐。
Markdown Preview Enhanced(MPE)
Extensions search >>>> Markdown Preview Enhanced [Yiyi Wang] >>>> 是一款为 Atom 以及 Visual Studio Code 编辑器编写的 超级强大的 Markdown 插件。 这款插件意在让你拥有飘逸的 Markdown 写作体验。
相信你在查阅资料过程中,肯定被安利过 MPE(Markdown Preview Enhanced),它凭借其丰富的特性支持,提供了编辑 Markdown 文档时可能用到的几乎所有功能:
1 | 自动编辑器及预览滑动同步 |
关于 MPE 详细使用说明,你可以参考 >>>> Markdown Preview Enhanced 中文说明文档。
插件评价 >>>> 可选插件,功能丰富,支持编辑 Markdown 文档时可能用到的几乎所有功能。但灵活的定制带来使用复杂度的提升,某些功能(例如:Pandoc、ebook)的使用需要单独安装相应的工具,并且相对于其它专用插件需要消耗更多的性能。
插件选用方案
结合上一小节的插件说明以及评价,你可以综合考虑个人的使用需要,选择符合你个人使用习惯的插件搭配方案,以构建一个合理的 VSCode Markdown 创作环境。
这里有一些推荐方案:
[1] >>>> 方案:Markdown Lint && MPE
如果你想在安装 VS Code 之后快速开始 Markdown 的创作,避免令人烦躁的插件选择、下载、安装、配置过程,此时,你仅仅需要一个 MPE(Markdown Preview Enhanced) 插件就可以满足你的日常使用了。
例如:MPE 开箱即用的目录(TOC)生成、不同风格的预览主题(Atom && Github && Vue…)、快速导出 PDF(HTML && PNG && JPEG)等等。
同时,你可以配合下载 Markdown Lint 扩展,以支持 Markdown 语法规范。
[2] >>>> 推荐方案:Markdown Lint && Markdown Preview Github Styling && Markdown PDF(Pandoc)&& PicGo
对我个人而言,MPE 对于性能的影响我难以接受,并且 MPE 丰富的特性于我而言不是刚需。作为一个重度强迫症,我无法忍受 MPE 预览菜单中的无效操作条目(某些功能只有安装相应工具才可以使用)。
很多时候并不是功能越多越好,适合你自己的才是最好的!!!事实上,我个人日常使用的编辑要求仅仅如下:
- Markdown 代码检查(Markdown Lint)
- 良好的侧栏预览风格(Markdown Preview Github Styling)
- 支持导出 PDF && HTML && Word 等格式的文档(Markdown PDF(Pandoc))
- 图像上传工具(PicGo)
通过一些精简的、小型的、专用替代插件,就可以在 VS Code 中帮助我们实现一个高效、惊人、影响较小的 Markdown 编辑器了。
使用 VSCode 搭建一个惊人的 Markdown Editor
https://www.orangeshare.cn/2017/09/22/shi-yong-vscode-da-jian-yi-ge-liang-ren-de-markdown-editor/
install_url
to use ShareThis. Please set it in _config.yml
.