命令行界面¶
如果安装了 pygmentize 脚本::
$ pygmentize test.py
print "Hello World"
将使用Python词法分析器(从文件扩展名推断)和终端格式化程序(因为您没有给出明确的格式化程序名称)将文件test.py打印到标准输出。 pygmentize 尝试检测终端支持的最大颜色数。16色和256色的颜色格式化程序之间的差异是巨大的,但256和1600万种颜色的颜色格式化程序之间的差异不太明显。
以下是它如何检测您的终端支持的最大颜色数量的过程。如果 COLORTERM
环境变量设置为 truecolor
或 24bit
,它将使用1600万种颜色表示(如 terminal16m
)。下一步,它将试图找到 256
是环境变量中的任何位置 TERM
,它将使用256色表示法(例如 terminal256
)。如果没有找到这两种颜色,则会退回到16色表示法(如 terminal
)。
如果需要HTML输出:
$ pygmentize -f html -l python -o test.html test.py
如您所见,-l选项显式地选择一个lexer。如上所示,如果您提供一个输入文件名,并且它有一个Pygments可以识别的扩展名,那么您可以省略这个选项。
这个 -o
选项提供输出文件名。如果没有给出,输出将写入stdout。
这个 -f
option selects a formatter (as with -l
,如果给定了输出文件名并具有受支持的扩展名,则也可以省略)。如果没有给出输出文件名,并且 -f
被省略, TerminalFormatter
使用。
因此,上述命令也可以如下所示:
$ pygmentize -o test.html test.py
创建完整的HTML文档,包括行号和样式表(使用“emacs”样式),突出显示python文件 test.py
到 test.html
::
$ pygmentize -O full,style=emacs,linenos=1 -o test.html test.py
选项和筛选器¶
lexer和格式化程序选项可以使用 -O
选项:
$ pygmentize -f html -O style=colorful,linenos=1 -l python test.py
如果选项字符串包含任何特殊的shell字符(如空格或扩展通配符,如 *
. 如果某个选项需要一个列表值,请用空格分隔列表条目(在本例中,您还必须引用选项值,这样shell就不会拆分它)。
自从 -O
选项参数以逗号分隔,并要求拆分值的形式为 name=value
,不能给出包含逗号或等号的选项值。因此,选择 -P
is provided (as of Pygments 0.9) that works like -O
但每个只能通过一个选项 -P
. 它的值可以包含所有字符::
$ pygmentize -P "heading=Pygments, the Python highlighter" ...
使用将筛选器添加到令牌流 -F
选项:
$ pygmentize -f html -l pascal -F keywordcase:case=upper main.pas
如您所见,过滤器的选项在冒号之后给出。至于 -O
,筛选器名称和选项必须是一个shell单词,因此冒号周围不能有任何空格。
生成样式¶
格式化程序通常不输出完整的样式信息。例如,默认情况下,HTML格式化程序只输出 <span>
带标签 class
属性。因此,有一个特别的 -S
用于生成样式定义的选项。用法如下:
$ pygmentize -f html -S colorful -a .syntax
为“彩色”样式生成一个CSS样式表(因为您选择了HTML格式设置工具),在所有样式规则前加上一个“.syntax”选择器。
对于一个解释是什么 -a
手段: a particular formatter ,查找 arg 格式化程序的 .get_style_defs()
方法。
获取lexer名称¶
在 1.0 版本加入.
这个 -N
选项猜测给定文件名的lexer名称,以便:
$ pygmentize -N setup.py
将打印出来 python
. 它不会突出显示任何内容。如果该文件名不知道特定的lexer, text
打印。
此外,还有 -C
选项,这就像 -N
,只是它仅根据标准输入中的给定内容打印出词法分析器名称。
从文件内容猜测词法分析器¶
这个 -g
选项将尝试从文件内容中猜测正确的词法分析器,或者如果猜不到任何内容,则作为纯文本传递。此选项还在文本中查找Vim Modeline,并 some 语言,刘海。用法如下:
$ pygmentize -g setup.py
但是请注意,这个选项不是很可靠,可能只有在Pygments无法从文件扩展名猜测正确的词法分析器时才应该使用。
突出显示标准输入,直到EOF¶
这个 -s
选项一次处理一行,直到EOF,而不是等待处理整个文件。这只适用于stdin,只适用于没有跨行构造的词法分析器,并且用于流输入,比如从 tail -f 。用法如下:
$ tail -f sql.log | pygmentize -s -l sql
自定义lexer和格式化程序¶
在 2.2 版本加入.
这个 -x
标志允许从相对于当前目录的文件加载自定义lexer和格式化程序。使用名为CustomLexer或CustomFormatter的类创建文件,然后在命令行上指定该文件::
$ pygmentize -l your_lexer.py -f your_formatter.py -x
还可以用冒号指定类的名称:
$ pygmentize -l your_lexer.py:SomeLexer -x
有关详细信息,请参阅 the Pygments documentation on Lexer development .
得到帮助¶
这个 -L
选项列出lexer、格式化程序及其短名称和支持的文件扩展名、样式和筛选器。如果只想查看一个类别,请将其作为参数:
$ pygmentize -L filters
将只列出所有已安装的筛选器。
在 2.11 版本加入.
这个 --json
选项可以与 -L
将其内容输出为JSON的选项。因此,要以JSON格式打印所有已安装的样式及其说明,请使用命令::
$ pygmentize -L styles --json
这个 -H
选项将为您提供有关lexer、格式化程序或过滤器的详细信息(与本文档中提供的信息相同)。用法如下:
$ pygmentize -H formatter html
将打印HTML格式化程序的帮助,同时:
$ pygmentize -H lexer python
将打印python lexer等的帮助。
关于编码的注释¶
在 0.9 版本加入.
Pygments试图在格式化过程中巧妙地编码:
如果你给
encoding
选项,它将用作输入和输出编码。如果你给
outencoding
选项,它将覆盖encoding
作为输出编码。如果你给
inencoding
选项,它将覆盖encoding
作为输入编码。如果您没有给出编码并给出输出文件,lexer和formatter的默认编码是终端编码或系统的默认区域设置编码。作为最后的手段,
latin1
使用(将通过所有非ASCII字符)。如果您没有给出编码,也没有给出输出文件(这意味着输出被写入控制台),lexer和formatter的默认编码是终端编码 (
sys.stdout.encoding
)