paline-0.5.0 is not a library.
一个快速统计代码行数的命令行工具。递归扫描目录,按编程语言统计行数,并在终端中以彩色横向条形图直观展示各语言的行数占比。
特性
- 递归扫描目录,自动跳过
.gitignore中忽略的文件与隐藏文件 - 根据扩展名识别多种常见编程语言 / 标记语言(C/C++、Python、Java、Go、Rust、JS/TS、Shell 等)
- 基于
rayon并行统计,大项目速度快 - 彩色条形图 + 语言图例,占比一目了然
- 支持
-vv逐文件调试日志
快速开始
通过 Cargo
或从源码构建
&&
使用
基本统计
# 统计当前目录(默认)
# 统计指定目录
# 输出调试日志(-vv 显示逐文件追踪)
# 统计当前 git 仓库某个 Commit
对比差异
# 对比 base commit 与当前工作树的净变化
# 对比两个 commit 的净变化
说明:
diff子命令显示的是 新增行数 - 删除行数 的净增量
命令行参数
| 参数 | 说明 |
|---|---|
stats [OPTIONS] |
统计目录或指定 commit 的行数 -c --commit <commit hash> 参数表示要统计的 commit 的 hash |
diff --base <commit> [--target <commit|WORKTREE>] |
对比 base commit 与 target 的净变化,target 默认为 WORKTREE(当前工作树),也可以是另一个 commit hash |
-p, --path <PATH> |
要统计的文件或目录,默认为 .(当前目录) |
-v, --verbose |
输出 debug 日志,-vv 显示逐文件追踪 |
-h, --help |
显示帮助信息 |
-V, --version |
显示版本号 |
行数统计规则
- 行数计算:按换行符
\n分割统计。如果文件末尾缺少换行符,会补计一行。 - 空文件:计为 0 行,并且不被纳入语言类别中。
- 忽略规则:自动忽略 .gitignore 中定义的文件。
- 语言识别:基于文件扩展名映射到语言类别。
配置文件
配置文件位置
首次运行时,Paline 会在以下目录生成默认配置文件(如果不存在):
- Linux / macOS:~/.config/paline/languages.toml
- Windows:%APPDATA%\paline\languages.toml
配置格式
配置文件为 TOML 格式,结构如下:
[[]]
= "rust" # 语言唯一标识(用于内部索引)
= "Rust" # 显示名称
= ["rs"] # 关联的扩展名列表(不含点)
= [] # 精确文件名列表(如 Makefile、CMakeLists.txt)
= [222, 165, 132] # RGB 颜色分量,范围 0~255
每个 [[lang]] 表项对应一种语言,你可以定义任意数量。
示例:添加 Zig 语言支持
[[]]
= "zig"
= "Zig"
= ["zig"]
= []
= [247, 138, 30]
示例:修改 Python 的显示颜色
[[]]
= "python"
= "Python"
= ["py", "pyw", "pyi"]
= []
= [255, 200, 0] # 从默认的蓝色改为黄色
贡献
欢迎提交 Issue 和 Pull Request!
📘 面向贡献者:开发环境搭建、提交前检查脚本(
scripts/push.py)的详细用法,请参阅 贡献者指南。
许可
本项目采用 MIT 许可证。
Copyright © 2026 luxpapilio