vscode本身不统计每日代码量,插件如vs code counter仅静态扫描文件换行符,无法识别编辑行为或git状态;真实增量应使用git diff --shortstat head@{yesterday}等git命令获取。

VSCode 本身不记录“每天写了多少行”,所有号称“统计每日代码量”的插件(包括 VS Code Counter、Line Count、WakaTime)都只是间接估算,且极易失真——别把它当 Git 提交日志用。
VS Code Counter 为什么不能算“每天写了多少行”
它只做静态扫描:遍历文件、数换行符、按扩展名分类。它不感知编辑行为、不对比前后版本、不区分新增/修改/删除。所谓“今日新增 200 行”,实际可能是你打开了一个 200 行的旧文件并保存了一次,或者改了 1 行但自动格式化触发了全文件重排版。
-
VS Code Counter默认连package-lock.json和yarn.lock都计入,单个锁文件常超 10,000 行 - 配置项
"Counter.exclude"必须手动加"**/node_modules/**"、"**/dist/**"、"**/*.lock",否则结果毫无参考价值 - 它不识别 Git 状态,
git status --short显示的M(modified)、A(added)行数才是真实增量
想看“今天改了多少行”,用 Git 命令更可靠
在终端里执行以下命令,比任何插件都准:
git diff --shortstat HEAD@{yesterday}
如果想排除空白符变更(比如只看逻辑改动):
git diff -w --shortstat HEAD@{yesterday}
- 注意:
HEAD@{yesterday}依赖 reflog,默认开启;若关闭过,需先运行git config --global core.logAllRefUpdates true - Windows 用户用
HEAD@{"yesterday"}(加英文双引号),避免 PowerShell 解析错误 - 该命令统计的是暂存区 + 工作区所有未提交改动,不是“保存次数”或“光标移动次数”
WakaTime 是唯一接近“时间维度”的方案,但有硬伤
它靠心跳检测编辑器活跃状态,再结合文件路径推断“在哪个项目写了多久”,但它从不统计行数。所谓“今日编码 4 小时 23 分”,背后是每 2 分钟发一次心跳,中间无操作即断开——写注释、查文档、调试卡住的时间全被算进去。
- WakaTime 的
~/.wakatime.cfg文件必须存在且api_key正确,VSCode 插件重启才读取,改完设置不重启等于没设 - 项目名显示
unknown project多半是因为当前文件不在 Git 仓库根目录下,或没运行git init - 它无法区分“写了 50 行新代码”和“删了 50 行烂代码”,更不会告诉你这 50 行是不是都在同一个
console.log里
真正有用的组合:Git + 手动快照
如果你真需要量化产出,建议放弃“自动每日行数”,改用轻量快照法:
- 每天下班前,在终端执行:
git ls-files --exclude-standard | xargs wc -l | tail -n1 | awk '{print $1}' > ~/daily-lines-$(date +%Y-%m-%d).txt - 配合
git diff --shortstat HEAD@{00:00}(需当日首次 commit 后再运行)可粗略对比 - 重点不是数字本身,而是连续 5 天都低于 50 行时,该检查是不是卡在设计、联调或环境问题上了
所有插件统计的都是“静态快照”或“行为代理”,而代码的真实增量永远藏在 Git 的 diff 里——这点容易被忽略,但绕不开。











