先上链接: https://github.com/werifu/complish
参数补全:你在 shell 里输入命令后,按 Tab 键可以给你列出的子命令或者参数候选项,如下图
非常知名的 CLI 一般都会自带补全,但是很多 CLI 开发者并不提供该 CLI 在各种 shell 下的补全,每次使用的时候如果忘记参数了又要重新执行 cmd --help
去看帮助,非常影响体验。能够简单地为所有 CLI 生成补全的话就可以解决这个问题,如上图的补全就是由 complish 实现的,croc 的作者并没有提供。
各个 shell ( bash 、zsh 、fish 、powershell )等都支持 completion 的语法,允许为命令增加自定义的参数补全,但是各家的语法并不相通,因此我只做了我用的 fish 版本,同时也相当于安利 fish 了吧: https://fishshell.com/😄
原理其实很简单,就是程序里靠执行 cmd --help
得到 help page 的文本,分析文本然后按 completion 语法去生成对应的 completion 脚本。然而难点在于 help page 并没有统一的规范,不同的框架、不同的语言都有不一样的写法,写出来的 help page 没有统一的严格结构,很难解析,因此 chatGPT 的出现真的是这个问题的救星,喂入 help page 的文本,生成一个该 help page 的结构化 json ,我就能很轻松地解析并生成补全文件。
我相信 chatGPT 拥有的 text to structure 的能力能很大程度改善生产生活的体验,这只是一个很小的应用场景
欢迎大家来使用体验!如果觉得好还请给个 ⭐️
3.30 更新:
我增加了对 zsh 的支持,现在 CLI 也可以生成 zsh 下的补全文件了!
未来还可能增加对 bash 的补全,但是觉得还能忍受 bash 的人或许不太需要这个……如果有需要可以在这留个言
1
xiebruce 2023-03-12 15:57:31 +08:00
别提了,我今天服务器 ip 刚被封(就是通过我服务器上 chatgtp ,显示 access denied)
|
3
dayeye2006199 2023-03-13 01:17:37 +08:00 via Android
这个真不错,是个很好的主意。文本过长的问题看看 langchain 能否解决?
|
5
werifu OP @dayeye2006199 sorry 我之前意识回复了发现没真的回复,前段时间捣鼓了 langchain ,感觉场景还是不太一样,langchain 更适合检索的场景,比如大段大段 pdf ,不要求多精确,但是这个是用来做结构化解析的,加上之后 GPT4 将支持更高的 token 限制,所以我觉得这个问题放着不管哪天就自己解决了😁
|
6
werifu OP 服务器上因为没法用 fish 当默认 shell (会导致 vscode 的 remote 爆炸),所以一直用的 zsh ,为了方便给服务器也加上 CLI 的补全,我新增加了对 zsh 的支持,现在 CLI 也可以生成 zsh 下的补全文件了,应该适用范围更大了
|