546 字
2 分钟

Apophenia, 新时代补全工具

Apophenia (/æpəˈfiːniə/) is the tendency to perceive meaningful connections between unrelated things. 中文名钦定为“忘却”。

baka-gourd
/
apophenia
Adding autocompletion to applications that do not support shell completion
0
0
MPL-2.0
Rust

是吧,我还是挑了一个好名字。这个库旨在使用三方支持的方式,为不支持终端补全的命令行工具添加补全功能,从而提升开发者的使用体验。不过,这不可能是自动的,所以是我一个一个对着help搞得,如有错误多多包涵。理论上支持所有1平台,所以你可以在Linux、macOS以及Windows上使用它。

这个功能在几年前(可能很久)是做不到的,特别是Linux上,因为Bash不支持注册Completer。不过现在新的shell都基本上支持了。本应用分为两个部分,数据库和补全引擎。补全蹭的是clap的特性,然后数据库负责存储命令及其参数的结构化信息,从而在用户输入时能够快速提供补全建议。底层使用的是sqlite来查询,sqlite的性能还是太好了,我反正是无感。

工作原理也非常简单,运行install之后,在shell看来这个cli就“伪装”成了对应工具的补全器。我在此基础上添加了版本管理功能,所以如果日后更新了的话,还是可以在不同的版本上引用不同的补全数据库的。不过目前只支持静态内容的补全,动态需要一个个对着特调,不适合这个项目的目标。

总之这个东西的功能非常简单,但是我怎么好像不知道有人做过这种东西(笑)。可能之前都是对某个终端进行针对性强兼,但是我现在还是搞了个通用的解决方案出来,因为看着pwsh社区人挺少的,就比较没办法。我会尽量维护我用到的CLI,然后也希望其他记不住参数的人也能来贡献一下。感觉其实现在AI挺适合做这种东西的。

脚注

  1. 实际上是所有rust能够target到的平台,ppc还是太哈人了。

Apophenia, 新时代补全工具
https://nptr.cc/posts/2026-08/apophenia/
作者
Nullpinter
发布于
2026-08-30