扩展 dotcommon:如何为 Fish、Termite 等配置文件添加自定义统计器?

发布时间:2026/8/18 17:07:13

扩展 dotcommon:如何为 Fish、Termite 等配置文件添加自定义统计器?
扩展 dotcommon如何为 Fish、Termite 等配置文件添加自定义统计器【免费下载链接】dotcommonWhat do people have in their dotfiles?项目地址: https://gitcode.com/gh_mirrors/do/dotcommondotcommon 是一个开源的dotfiles 配置统计工具它会爬取 GitHub 上最近编辑的 1000 份配置文件并自动统计出最常见的 Bash 别名、Vim 插件、Fish 导出项等榜单。今天我们就来手把手教你扩展 dotcommon为 Fish、Termite 等配置文件添加自定义统计器让它按你的需求统计任意配置写法。整个项目只有 4 个核心文件 10 个配置模块结构非常清晰非常适合拿来练手和理解爬虫 统计的完整流程。一、先搞懂 dotcommon 的统计原理 dotcommon 的统计链路很简单只有三步爬取crawl()通过 GitHub Code Search 按文件名如config.fish搜索最新配置统计count_atoms()把每个文件的文本喂给统计器atomizer用Counter累加输出write_header()和write_table()把结果写成易读的 RST 表格核心代码就藏在三个小文件里src/dotcommon/crawl.py负责搜索与调度的主入口src/dotcommon/count_atoms.py负责逐文件调用统计器并计数src/dotcommon/write.py负责格式化输出排行榜# src/dotcommon/crawl.py 的核心签名 def crawl(header, filename, *atomizers, countNone, pathNone): ... files g.search_code(queryfilename: filename, sortindexed, orderdesc) counters_atomizers count_atoms(files, atomizers)关键参数很好理解filename指定要搜的配置文件名path限定目录比如只搜termite目录count限制抓取数量*atomizers就是你要传入的自定义统计器。二、统计器atomizer到底长什么样统计器本质就是一个纯函数输入一段配置文件文本输出一堆原子要统计的字符串。它的 docstring 会直接变成结果表格的小标题。dotcommon 还内置了一个高频工具函数lines_starting_with()专门用来按行前缀提取# src/dotcommon/util.py def lines_starting_with(start, text): for line in text.splitlines(): stripped line.rstrip() if stripped.startswith(start): yield stripped下面这个来自src/fish.py的统计器就是最标准的写法def aliases(text): Aliases # ← docstring 会成为表格标题 return lines_starting_with(alias , text)一个函数 一个统计维度。想统计什么就写一个这样的函数然后把它传给crawl()即可。三、实战一为 Fish 添加自定义统计器 src/fish.py目前只有aliases别名和exports导出项两个统计器。假如你想知道大家最常给 Fish 配置哪些abbr缩写只需加一个函数def abbreviations(text): Abbreviations return lines_starting_with(abbr , text) crawl(Fish, config.fish, aliases, exports, abbreviations)再把abbreviations追加到crawl()的参数列表里运行python src/fish.py输出的榜单里就会多出一张 Abbreviations 表格。 同理你还可以为 Fish 添加functions函数定义、set变量设置等自定义统计器。四、实战二为 Termite 添加自定义统计器 ️src/termite.py目前只统计font字体而且它展示了统计器的进阶玩法——先处理再统计def font(text): Font fonts lines_starting_with(font , text) return (font.lower() for font in fonts) # 统一转小写再计数这样Font Hack 10和font hack 10会被合并成同一个条目统计更准确。想扩展 Termite 的统计维度加一个scrollback回滚行数统计器就行def scrollback(text): Scrollback return lines_starting_with(scrollback , text) crawl(Termite, config, font, scrollback, pathtermite)注意这里用了pathtermite参数——因为config文件名太通用必须限定目录才能精准命中 Termite 的配置文件。五、实战三高阶玩法——统计组合状态 有的统计器不满足于逐行计数而是要把多个配置组合成一个结论。src/bspwm.py里的gap_border就是绝佳范例它同时读取window_gap和border_width两行配置拼成一个间隙/边框的元组再计数def gap_border(text): Window gap/border width gap unset border unset for line in text.splitlines(): stripped line.rstrip() if stripped.startswith(bspc config window_gap ): gap stripped[stripped.rfind( ) 1:] elif stripped.startswith(bspc config border_width ): border stripped[stripped.rfind( ) 1:] return (f{gap}/{border},) # 返回元组这种思路可以迁移到任何多行联动的统计场景比如统计 i3wm 里modShiftr这类组合键或统计 Vim 中set shiftwidth4搭配set expandtab的常见组合。六、如何运行你的自定义统计器克隆仓库并安装依赖git clone https://gitcode.com/gh_mirrors/do/dotcommon cd dotcommon pip install PyGithub tabulate准备 GitHub Token在项目根目录创建token.gh文件填入一个有 Code Search 权限的 GitHub Tokencrawl.py会读取它。运行对应模块python src/fish.py # 统计 Fish 配置 python src/termite.py # 统计 Termite 配置控制抓取规模如果 1000 份太多或太少在crawl()调用里传入count100即可调整样本量。七、常见问题FAQ❓Q统计结果可信吗A项目 README 明确提醒结果基于GitHub 上最近编辑的 1000 份配置只代表趋势不代表全体用户请勿过度解读。Q可以统计任意配置文件吗A可以只要知道文件名比如vimrc、zshrc、bspwmrc、config.fish就能为它写专属统计器。参考src/vim.py、src/zsh.py、src/i3wm.py等现有模块的写法即可。Q统计器必须按行匹配吗A不必。atomizer 只是输入文本、输出原子列表的函数你可以用正则、按块解析、甚至做 NLP 分词自由发挥。QToken 无效或搜不到结果怎么办A确认 Token 开启了code权限且配额未用尽再检查文件名和path参数是否写对。八、小结 扩展 dotcommon 添加自定义统计器本质就是三步写一个接受文本、返回原子列表的函数 → 把函数传给crawl()→ 运行模块看榜单。从 Fish 的abbr到 Termite 的scrollback再到 bspwm 的组合状态统计你已经掌握了从入门到进阶的全部套路。现在就打开项目参照src/fish.py和src/termite.py的代码给你的 dotfiles 配置写一个专属统计器吧【免费下载链接】dotcommonWhat do people have in their dotfiles?项目地址: https://gitcode.com/gh_mirrors/do/dotcommon创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Flipper Authenticator支持Steam令牌吗?如何在Flipper Zero上使用Steam验证码

Flipper Authenticator支持Steam令牌吗?如何在Flipper Zero上使用Steam验证码

2026/8/18 17:07:13

Flipper Authenticator支持Steam令牌吗?如何在Flipper Zero上使用Steam验证码 【免费下载链接】flipper-zero_authenticator Software-based TOTP/HOTP authenticator for Flipper Zero device. 项目地址: https://gitcode.com/gh_mirrors/fl/flipper-zero_authen…

SonarSearch入门指南:一文读懂Project Sonar子域名查询API

SonarSearch入门指南:一文读懂Project Sonar子域名查询API

2026/8/18 17:07:13

SonarSearch入门指南:一文读懂Project Sonar子域名查询API 【免费下载链接】SonarSearch A rapid API for the Project Sonar dataset 项目地址: https://gitcode.com/gh_mirrors/so/SonarSearch SonarSearch 是一个围绕 Rapid7 Project Sonar 数据集的子域名…

memtest_vulkan显存稳定性测试上手教程:5分钟揪出显卡“暗病“

memtest_vulkan显存稳定性测试上手教程:5分钟揪出显卡“暗病“

2026/8/18 17:07:13

memtest_vulkan显存稳定性测试上手教程:5分钟揪出显卡"暗病" 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 你有没有遇到过这种场面&…

python的运筹学工业场景模拟第五十三篇:读取多组原料报价,循环做灵敏度校验,判断不同原料报价下原有最优方案,时是否依旧有效。

python的运筹学工业场景模拟第五十三篇:读取多组原料报价,循环做灵敏度校验,判断不同原料报价下原有最优方案,时是否依旧有效。

2026/8/18 18:07:16

原料报价"压力测试":用Python循环校验不同报价下最优配方会不会翻车"某饲料集团配方师每月用线性规划做全厂配方优化——几十种原料、几十条营养约束、十几个产品。最优配方算出来后,采购部拿过来一份下周原料报价单:玉米涨了…

.htaccess 性能优化宝典:compass-html5-boilerplate 内置的 Gzip、缓存与 ETag 配置逐行解读

.htaccess 性能优化宝典:compass-html5-boilerplate 内置的 Gzip、缓存与 ETag 配置逐行解读

2026/8/18 18:07:15

.htaccess 性能优化宝典:compass-html5-boilerplate 内置的 Gzip、缓存与 ETag 配置逐行解读 【免费下载链接】compass-html5-boilerplate Compass version of the Html5 Boilerplate project by Paul Irish 项目地址: https://gitcode.com/gh_mirrors/co/compass…

claude code多次配置path,仍显示异常,如何解决?

claude code多次配置path,仍显示异常,如何解决?

2026/8/18 18:07:15

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者&…

Bligify 手把手教程:在 Blender 视频序列编辑器中一键导出高清 GIF 动画的终极方案

Bligify 手把手教程:在 Blender 视频序列编辑器中一键导出高清 GIF 动画的终极方案

2026/8/18 18:07:15

Bligify 手把手教程:在 Blender 视频序列编辑器中一键导出高清 GIF 动画的终极方案 【免费下载链接】Bligify Blender addon for exporting and importing animated GIF sequences 项目地址: https://gitcode.com/gh_mirrors/bl/Bligify 凌晨两点&#xff0c…

从被动防御到主动安全:智能汽车多传感器融合与电子电气架构演进

从被动防御到主动安全:智能汽车多传感器融合与电子电气架构演进

2026/8/18 18:07:15

1. 从“铁皮盒子”到“移动智能终端”:汽车安全观念的范式转移 十几年前,我们聊汽车安全,脑子里蹦出来的多半是“钢板厚不厚”、“有几个气囊”、“碰撞测试几颗星”。那时候,安全的核心是“被动防御”——在事故发生的瞬间&#…

告别手忙脚乱:GSE智能宏5分钟搭建自动化技能循环,免费还开源

告别手忙脚乱:GSE智能宏5分钟搭建自动化技能循环,免费还开源

2026/8/18 17:57:15

告别手忙脚乱:GSE智能宏5分钟搭建自动化技能循环,免费还开源 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. 项目地址: https://gitcode.com/gh_mirrors/gs/GSE-Adva…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/17 1:28:42

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/18 1:03:22

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/17 8:40:51

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

多智能体大模型辩论中的立场收敛:从伪共识到理性说服的评估方法

多智能体大模型辩论中的立场收敛:从伪共识到理性说服的评估方法

2026/8/18 0:06:29

1. 从一场“假辩论”说起:为什么大模型辩论会走向“伪共识”?最近在折腾多智能体大语言模型(Multi-Agent LLM)的辩论实验,发现一个挺有意思的现象。我让几个基于GPT-4的智能体就一个争议性话题(比如“远程办…

Frida动态代码插桩框架:从原理到实战的移动安全与逆向工程指南

Frida动态代码插桩框架:从原理到实战的移动安全与逆向工程指南

2026/8/18 0:06:29

1. 从“黑盒”到“白盒”:为什么我们需要Frida在移动安全、逆向工程甚至是一些自动化测试的场景里,我们经常会遇到一个让人头疼的问题:面对一个编译好的、没有源代码的应用程序,我们如何知道它在运行时内部发生了什么?…

ECharts饼图中心文字配置指南:从label与title区别到动态交互实现

ECharts饼图中心文字配置指南:从label与title区别到动态交互实现

2026/8/18 0:06:29

1. 从“空心”到“有魂”:为什么要在饼图中间加文字?如果你用过ECharts画饼图,大概率会注意到一个现象:默认生成的饼图中间是空心的。这个设计本身没问题,它清晰地展示了各个扇区的占比关系。但在很多实际的业务场景里…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…