启用代码高亮需主题内置codemirror语法着色规则,monokai等深色主题通常支持完整高亮,grade3等浅色主题则支持较弱;若高亮失效,可手动在custom.css中添加token样式并重启jupyter。

直接用 jupyter-themes 设置主题就能启用代码高亮,但默认高亮效果取决于主题本身是否内置了语法着色规则——不是所有主题都对 Python 字符串、函数、注释等做了差异化配色。
为什么有些主题看起来没高亮?
常见现象是:应用了 jt -t monokai 后,代码块背景变暗了,但字符串还是灰色、函数没颜色、注释和普通文本一样。这是因为部分主题(比如 grade3 或 chesterish)只改了 UI 色系,没重写 CodeMirror 的 token 样式规则。
-
monokai、oceans16、gruvboxd这类深色主题通常自带完整高亮逻辑 -
grade3、solarizedl等浅色主题高亮较弱,尤其对数字、布尔值、装饰器等支持不全 - 即使主题支持高亮,如果用了非等宽字体(如
-f sans),某些 token 的宽度错位会导致高亮“断开”
怎么确认当前高亮是否生效?
打开一个 Python notebook,输入一段典型代码并运行:
def hello(name: str = "world") -> None:
print(f"Hello, {name}!")
if True:
return 42
# 这是注释
观察以下元素是否有颜色区分:
-
def、if、return是否为蓝色或青色 - 字符串
"world"和f"Hello, {name}!"是否为黄/绿色 -
42、True是否为橙色或红色 - 注释
# 这是注释是否为灰/褐色
如果全无差异,说明高亮未激活或主题不支持。
强制启用或修复高亮的实操方法
不要依赖主题自动带的高亮,直接补一层 CodeMirror 配置更可靠:
- 在
~/.jupyter/custom/custom.css中追加如下规则(路径需真实存在,不存在就手动创建):
/* 强制 Python token 高亮 */
.CodeMirror span.cm-string { color: #b8bb26 !important; }
.CodeMirror span.cm-number { color: #fe8019 !important; }
.CodeMirror span.cm-keyword { color: #83a598 !important; }
.CodeMirror span.cm-comment { color: #928374 !important; }
.CodeMirror span.cm-variable { color: #ebdbb2 !important; }
- 重启 Jupyter Notebook(不是刷新页面,是彻底 kill 进程再
jupyter notebook) - 若仍无效,检查浏览器是否缓存了旧 CSS:强制硬刷新(
Ctrl+Shift+R或Cmd+Shift+R) - 避免使用
-dfonts参数——它会禁用所有自定义字体,连带覆盖 CodeMirror 的 token class 映射
真正起作用的从来不是“选个好看主题”,而是主题 + CodeMirror token 规则 + 字体渲染三者对齐;漏掉任意一环,高亮都会断层或失效。











