Highlight.JS

默认使用 Highlight.JS 进行代码语法高亮。

可通过代码块或短代码使用。

支持的语言

  • 默认情况下只支持以下 “Common” 类别中的语言 1bashccppcsharpcssdiffgographqlinijavajavascriptjsonkotlinlessluamakefilemarkdownobjectivecperlphpphp-templateplaintextpythonpython-replrrubyrustscssshellsqlswifttypescriptvbnetwasmxmlyaml

  • 可通过 页面参数2 hljs.languages 添加其他 HLJS 支持的语言

    • 例如添加 powershell 的支持:

      content/example.md
      ---
      title: Example
      params:
        hljs:
          languages:
             - powershell
      ---
      +++
      title = 'Example'
      [params.hljs]
      languages = [ "powershell" ]
      +++
      {
        "title": "Example",
        "params": {
          "hljs": {
            "languages": [
              "powershell"
            ]
          }
        }
      }

用法

代码块

Markdown渲染效果
```javascript
const array1 = [1, 2, 3, 4];
const sum = array1.reduce((a, b) => a + b);
```
const array1 = [1, 2, 3, 4];
const sum = array1.reduce((a, b) => a + b);
参数

可以添加以花括号包裹、以空格为分割的参数:

Markdown渲染效果
```javascript {lineNos=true title="helloworld.js" copy=true }
(() => {
    console.log("Hello World!");
})();
```
(() => {
    console.log("Hello World!");
})();
名称类型必要描述
noHeader布尔truefalse(默认)是否禁用代码顶部的标题栏
title字符串标题
copy布尔truefalse(默认)是否显示「复制」按钮
lineNos布尔truefalse(默认)是否显示行号
lineNoStart整数默认为 1起始行号
hl_Lines字符串否(未实现)以空格为分隔符:
a 行号为a的行
a,b 行号为ab的行
a-b 行号为ab的行
高亮的行的行号

短代码

使用 code 短代码对行内的代码进行语法高亮:

Markdown渲染效果
行内 {{< code >}}console.log("a"){{< /code >}}
行内 console.log("a")

通常情况下,HLJS 会自动判断代码的语言,如果自动检测结果有误或您希望明确指明代码的语言,可以使用首个位置参数指定语言:

Markdown渲染效果
行内 {{< code java >}}console.log("a"){{< /code >}}
行内 console.log("a")

Chroma

保留了 Hugo 内建的 Chroma 代码语法高亮,须使用短代码来调用。

更多信息见 Hugo 文档

Markdown渲染效果
{{< highlight go "linenos=inline, style=github" >}}
package main
import "fmt"
func main() {
    for i := 0; i < 3; i++ {
        fmt.Println("Value of i:", i)
    }
}
{{< /highlight >}}
1package main
2import "fmt"
3func main() {
4    for i := 0; i < 3; i++ {
5        fmt.Println("Value of i:", i)
6    }
7}