戏里戏外

为 Vitepress 添加代码关键字高亮

2025-04-25#VitePress

Vitepress 默认支持多种 Markdown 代码特性,包括:在代码块中实现行高亮代码块聚焦代码颜色差异化等。

除了内置的代码样式外,还可以通过扩展实现更丰富的代码展示效果。

Vitepress使用 Shiki 进行代码高亮处理,因此可以通过添加常用转换器 来扩展其功能。

本文将介绍如何使用 transformerMetaWordHighlight 为 Vitepress 添加关键字高亮功能。

安装

首先,将 @shikijs/transformers 安装到项目中:

yarn add -D @shikijs/transformers

配置

docs/.vitepress/config.ts 文件中启用它:

import { defineConfig } from "vitepress";
import { transformerMetaWordHighlight } from "@shikijs/transformers"; // [!code ++]

export default defineConfig({
  themeConfig: {
		 // ...
  },
  markdown: { // [!code ++]
    codeTransformers: [transformerMetaWordHighlight() as any], // [!code ++]
  }, // [!code ++]
});

配置完成后,可以在 .md 文档中使用 /word/ 语法来高亮指定关键字:

npm i -D @shikijs/transformers

此时渲染的 HTML 结构中,关键字 @shikijstransformers 会自动添加 .highlighted-word 类名,便于自定义样式。

添加样式

docs/.vitepress/theme/ 目录下创建以下文件:

:root {
  --vp-code-word-hightlight-light-color: #cbfbf1;
  --vp-code-word-hightlight-dark-color: #0d4e4a;
}

.highlighted-word {
  background-color: var(--vp-code-word-hightlight-light-color);
  border-radius: 3px;
  padding: 0 2px;
}

/* dark background-color */
.dark .highlighted-word {
  background-color: var(--vp-code-word-hightlight-dark-color);
}
import DefaultTheme from "vitepress/theme";
import "./style.css"; // [!code ++]

export default DefaultTheme;

完成以上配置后,就可以在文档中使用关键字高亮功能了,使阅读体验更加友好。