Jupyter Notebook 不支持将新单元格全局默认设为 Markdown,新建单元格始终为 code 类型;最实用方案是插入后立即按 M 切换(命令模式下),或使用 %%markdown 魔术命令+模板复用。

怎么让新单元格默认是 Markdown 而不是代码?
Jupyter Notebook 本身不提供「全局默认单元格类型」的设置项,新建单元格永远是 code 类型。但你可以用两种方式绕过这个限制:一是用快捷键快速切换,二是通过修改配置文件强制改变行为(仅限本地部署)。
常见错误现象是:点「+」或按 B/A 插入新单元格后,发现它默认是代码块,得再按 M 才能写说明文字——这其实是设计使然,不是 bug。
- 最实用的做法:插入后立刻按
M(命令模式下),100ms 内完成切换,比等鼠标点菜单快得多 - 如果你频繁写文档类 Notebook(比如教学笔记),可配合
Esc→A→M三连击,在上方插入并转为 Markdown 单元格 - 不建议依赖浏览器插件或第三方扩展来“改默认类型”,它们容易和新版 Jupyter 冲突,且无法保证内核兼容性
能否通过配置让所有新单元格自动是 Markdown?
不能直接实现,但有一个接近效果的 hack:修改 custom.js 注入脚本,监听单元格创建事件并自动调用 cell.set_type('markdown')。不过该方法有明显副作用:
- 仅对前端生效,导出为 .py 或 .html 时仍会保留原始
cell_type: "code"字段 - 在 JupyterLab 中完全失效(Lab 使用不同 API),PyCharm 内置 Notebook 也不支持
- 如果单元格里已有内容(比如粘贴了一段代码),强制转成 Markdown 会导致语法高亮丢失、执行逻辑错乱
真正可靠的替代方案是:把常用模板存成 snippet。例如在第一个单元格写好 %%markdown + 空行,之后复制粘贴即可——比改配置更稳定。
为什么官方不加这个设置?
因为 Notebook 的设计哲学是「以代码为中心」:code 单元格承载执行逻辑,markdown 是辅助解释。从 JSON 结构看,.ipynb 文件里每个 cell 对象必须显式声明 "cell_type": "code" 或 "markdown",没有“默认”字段。
另外,内核启动、变量作用域、输出渲染都强依赖于 code 单元格的执行顺序。如果默认变成 Markdown,用户可能误以为插入即“安全”,结果在中间混入未执行的代码单元格,导致变量未定义等隐蔽问题。
真正需要关注的其实是「何时该用哪种类型」:纯文本说明、标题、公式、链接一律用 markdown;任何含 print、import、plt.show() 的内容必须放在 code 单元格——类型选错比默认值更重要。


















