command-line-completions.gif

命令行自动补全功能对程序开发人员至关重要,能大幅提高工作效率。主流的shell如bash和zsh不断优化其补全机制,提供基本功能外还引入了复杂的语法系统,支持高级补全操作。然而,随着IDE中智能自动补全的出现,传统命令行补全方式显得效率低下。相比IDE的即时、精准补全,命令行需多次按Tab键才能获得选项,体验欠佳。

我回想起大约2022年左右,一家公司推出了名为Fig的创新工具,能够为各种命令行界面提供类似集成开发环境(IDE)的智能自动补全功能,正如封面图所展示的那样。然而,尽管Fig在技术上极具前瞻性,却因缺乏可持续的商业模式而陷入困境。最终,该公司不得不将Fig出售给科技巨头亚马逊。在亚马逊的收购之后,Fig经历了重塑,被整合进了亚马逊的生态系统。原有的Fig服务于2024年9月1日已经正式终止,并在新的产品——Amazon Q中得以延续。

然而这类工具同样存在着缺陷:默认的安装方式不会让所有的命令都获得补全。比如你自己写或安装了个小脚本或者其他什么工具,如果Amazon Q不能提供这些工具的自动补全,用户在使用命令行时就会产生割裂感,一些新奇有趣的工具也将由于用户的操作习惯而逐渐被抛之脑后。

而为了解决这一问题,我搞出来了个简单的命令行APP开发框架——Qpro,帮助快速构建一个命令行工具并生成Fig或zsh的补全脚本。它能够帮助用户快速构建命令行工具,并自动生成Amazon Q或zsh的补全脚本:

  1. 选择一个合适的位置,比如~/.complete目录。

  2. 在该目录下运行:npx @withfig/autocomplete-tools create-spec hello。这将生成一个src目录,其中包含一个hello.ts文件。

  3. 删除生成的hello.ts文件,无需关注它的内容。

  4. 使用基于Qpro开发的APP来执行xxx complete,会自动生成该工具的补全配置并应用到Amazon Q中。

  5. 最后,启用Amazon Q的开发者模式,并将spec路径设置为~/.complete/build