rfig 是一个开源 Rust 终端工具,为 macOS 和 Linux 上的 zsh、Bash、Fish 提供输入即出现的命令补全菜单,以及按当前目录匹配的内联历史建议。它受 Fig 启发,是一个独立的开源 Fig 替代方案。

实际终端演示:命令与路径补全,以及输入 gi 时同时显示菜单和内联历史建议。
不用先按 Tab:输入命令后即可浏览候选,用上下方向键选择、右箭头插入,再继续输入下一层。已有补全定义可以提供子命令、当前仓库的分支、路径等动态内容;可用层级和候选范围取决于本机的补全来源。
菜单与历史建议可以同时出现,而且分别计算。例如只输入 gi 时,菜单仍然根据 gi 提示命令,灰色的历史建议则可能补出以前在当前目录执行过的 git checkout main。Ctrl+E 接受历史建议;有历史建议时 Enter 执行完整建议,否则执行实际输入,不会自动接受菜单选中项。
内置历史建议可以替代 zsh-autosuggestions 的历史命令建议功能。rfig 自行维护带工作目录的本地历史,不自动导入缺少目录信息的旧 Shell 历史。选择与执行记录也会参与候选排序,最多前三个有使用记录的候选显示圈号,其他候选仍正常展示。
zsh 使用 ZLE,Bash 和 Fish 共用 Rust 编辑层,命令仍由当前 Shell 执行。补全优先复用环境中的原生定义和已安装脚本,再结合可识别的补全生成器、协议和帮助缓存。
安装设置时快速扫描 PATH 与常见补全目录,随后在隔离能力可用的情况下,串行分析符合条件的用户命令。帮助分析只是后备来源,不能保证任意命令都有完整的多级补全。
图标与选中文字使用终端 ANSI 调色板,菜单以箭头指示选中项。历史、排序记录和缓存保存在本机。
当前支持 macOS、Linux,以及 zsh、Bash 4.4+、Fish 3.6+。Homebrew 安装:
brew install tamia6/tap/rfig
rfig setup
设置后打开新的 Shell 会话。也可以下载包含二进制和安装脚本的发布包,或从源码安装;详细系统要求和使用说明见项目文档。
项目源码:https://github.com/tamia6/rfig
中文官网与演示:https://tamia6.github.io/rfig/zh/
欢迎反馈多 Shell 集成、终端显示和补全来源方面的体验。