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

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

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

而为了解决这一问题,我搞出来了个简单的命令行APP开发框架——Qpro,帮助快速构建一个命令行工具并生成Fig或zsh的补全脚本。它能够帮助用户快速构建命令行工具,并自动生成Fig或zsh的补全脚本。然而,Amazon Q目前无法像Fig那样直接通过命令集成其他工具的补全脚本。

因此,要使用Qpro生成的补全脚本,您需要遵循以下步骤:

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

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

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

  4. 将Qpro生成的补全脚本(假设名为`xxx.ts`)放入`src`目录。

  5. 在`~/.complete`目录下运行命令:`npx @withfig/autocomplete-tools compile`。这将生成一个`build`目录,至此主要工作完成。

  6. 最后,您需要启用Amazon Q的开发者模式,并将spec路径设置为`~/.complete/build`。

通过这些步骤,您就可以成功地将Qpro生成的补全脚本集成到Amazon Q中,从而增强您的命令行工具使用体验。