我正在使用Jekyll和Pygments将Markdown转换为静态 html 页面。内容是为GitHub 页面准备的。为了显示代码示例(本示例中的 shell 命令),我将以下部分添加到文件中:
{% highlight sh %}
$ ls -1a
.
..
README
{% endhighlight %}
该参数sh
是指配置词法分析器的shell。您还可以选择其他词法分析器,例如console
突出显示文本。
我注意到一些基本命令,例如ls
shell 词法分析器没有突出显示。这也可以在lexer 的源代码中看到。以下摘录显示了 shell 词法分析器的关键字定义(在 BashLexer 类中找到)。
...
'basic': [
(r'\b(if|fi|else|while|do|done|for|then|return|function|case|'
r'select|continue|until|esac|elif)\s*\b',
Keyword),
(r'\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|'
r'complete|declare|dirs|disown|echo|enable|eval|exec|exit|'
r'export|false|fc|fg|getopts|hash|help|history|jobs|kill|let|'
r'local|logout|popd|printf|pushd|pwd|read|readonly|set|shift|'
r'shopt|source|suspend|test|time|times|trap|true|type|typeset|'
r'ulimit|umask|unalias|unset|wait)\s*\b(?!\.)',
Name.Builtin),
(r'#.*\n', Comment),
(r'\\[\w\W]', String.Escape),
(r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)),
(r'[\[\]{}()=]', Operator),
(r'<<-?\s*(\'?)\\?(\w+)[\w\W]+?\2', String),
(r'&&|\|\|', Operator),
],
...
有没有办法扩展关键字列表,或者你能推荐另一个词法分析器吗?