Pygments命令行工具完全指南:代码高亮利器详解
什么是Pygments命令行工具
Pygments是一个强大的语法高亮工具,而pygmentize则是其提供的命令行接口。通过这个工具,开发者可以直接在终端或脚本中对代码文件进行高亮处理,支持输出到终端、生成HTML文件等多种格式。
基础使用方法
最简单的使用方式是直接对代码文件进行高亮输出:
pygmentize test.py
这个命令会自动:
- 根据文件扩展名(.py)识别为Python代码
- 使用终端格式化器输出彩色结果
对于需要生成HTML的情况:
pygmentize -f html -l python -o test.html test.py
参数说明:
-f指定输出格式(html)-l指定语言(可省略,自动识别)-o指定输出文件
终端颜色支持
Pygments能智能检测终端支持的颜色数量:
- 首先检查
COLORTERM环境变量- 若为
truecolor或24bit则使用1600万色模式
- 若为
- 然后检查
TERM环境变量- 若包含
256则使用256色模式
- 若包含
- 最后回退到16色模式
Windows用户注意:如需彩色输出支持,需安装额外组件:
pip install pygments[windows-terminal]
高级输出选项
生成带行号和完整样式的HTML文档:
pygmentize -O full,style=emacs,linenos=1 -o test.html test.py
其中-O参数可设置多个选项,用逗号分隔:
full生成完整HTML文档style=emacs使用emacs配色风格linenos=1显示行号
对于包含特殊字符的选项值,建议使用引号包裹:
pygmentize -O "style=monokai,linenos=1" -l python test.py
样式表生成
单独生成CSS样式表:
pygmentize -f html -S colorful -a .syntax
参数说明:
-S指定样式名称-a为所有CSS规则添加前缀选择器
语言识别功能
Pygments提供多种语言识别方式:
- 根据文件名识别:
pygmentize -N setup.py # 输出: python
- 根据内容识别:
pygmentize -C < input_file
- 自动猜测(不太可靠):
pygmentize -g unknown_file
流式处理
对于持续输出的内容(如日志),可使用流式处理模式:
tail -f sql.log | pygmentize -s -l sql
-s参数表示逐行处理输入,直到EOF。
自定义扩展
Pygments支持加载自定义的词法分析器和格式化器:
pygmentize -l your_lexer.py -f your_formatter.py -x
-x参数启用自定义扩展功能,文件中的类名应为CustomLexer或CustomFormatter,也可通过冒号指定类名:
pygmentize -l your_lexer.py:SomeLexer -x
帮助系统
- 列出所有支持的组件:
pygmentize -L
- 查看特定组件信息:
pygmentize -L filters # 只列出过滤器
pygmentize -H formatter html # HTML格式化器详细帮助
pygmentize -H lexer python # Python词法分析器详细帮助
- JSON格式输出(2.11+):
pygmentize -L styles --json
编码处理
Pygments提供灵活的编码处理机制:
- 设置统一编码:
pygmentize -O encoding=utf-8 ...
- 分别设置输入输出编码:
pygmentize -O inencoding=gbk,outencoding=utf-8 ...
默认编码策略:
- 优先使用终端编码
- 其次使用系统本地编码
- 最后回退到latin1
实用技巧
- 批量处理文件:
for f in *.py; do pygmentize -f html -l python -o "${f%.py}.html" "$f"; done
- 在网页中嵌入高亮代码(使用div包裹):
pygmentize -O cssclass=code-block -f html -l python test.py
- 使用不同主题预览效果:
pygmentize -L styles | awk '{print $1}' | xargs -I{} pygmentize -O style={} -f html -l python -o {}.html test.py
通过掌握这些命令和技巧,你可以充分利用Pygments的强大功能,无论是日常开发中的代码查看,还是文档生成中的代码高亮需求,都能得心应手地处理。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



