rfig:用 Rust 实现的终端自动补全,支持 zsh、Bash、Fish
内容提要
rfig 是一款开源 Rust 终端工具,为 macOS 和 Linux 上的 zsh、Bash、Fish 提供输入即现的命令补全菜单和按目录匹配的内联历史建议,是 Fig 的开源替代。补全菜单与历史建议分别计算,可同时显示;Ctrl+E 接受历史建议,Enter 执行完整建议。补全优先复用原生定义,历史与缓存存于本机,支持 Homebrew 安装。
延伸解读
与 Fig 的关系及开源定位
rfig 受 Fig 启发,是一个独立的开源替代方案。Fig 原本是闭源工具,而 rfig 以 Rust 实现并开源,为 macOS 和 Linux 上的 zsh、Bash、Fish 提供类似的补全体验。对于关注开源、可审计或希望自行修改的用户,rfig 提供了一个可选的替代路径。
补全菜单与历史建议的交互逻辑
补全菜单和历史建议分别计算,可同时显示。输入时菜单展示候选,历史建议以灰色内联显示。Ctrl+E 接受历史建议;有历史建议时 Enter 执行完整建议,否则执行实际输入,不会自动接受菜单选中项。这种设计让用户能明确区分两种补全来源,避免误操作。
历史记录与排序机制
rfig 自行维护带工作目录的本地历史,不自动导入缺少目录信息的旧 Shell 历史。选择与执行记录会参与候选排序,最多前三个有使用记录的候选显示圈号。这意味着历史建议按当前目录匹配,更贴合实际使用场景,但旧历史需要重新积累。
安装与系统要求
当前支持 macOS、Linux,以及 zsh、Bash 4.4+、Fish 3.6+。可通过 Homebrew 安装:brew install tamia6/tap/rfig,然后运行 rfig setup,并打开新的 Shell 会话。也可下载发布包或从源码安装。补全能力取决于本机补全来源,帮助分析只是后备,不保证任意命令都有完整多级补全。
Q&A
rfig 是什么?它主要解决什么问题?
rfig 是一个用 Rust 编写的开源终端工具,为 macOS 和 Linux 上的 zsh、Bash、Fish 提供输入即出现的命令补全菜单和按当前目录匹配的内联历史建议。它是 Fig 的开源替代方案,旨在提升终端输入效率。
rfig 的补全菜单和历史建议是如何工作的?
输入命令时,补全菜单会立即显示候选,无需按 Tab,可用方向键选择、右箭头插入。历史建议则根据当前目录匹配,以灰色内联显示。两者分别计算,可同时出现。Ctrl+E 接受历史建议;有历史建议时 Enter 执行完整建议,否则执行实际输入。
rfig 支持哪些 Shell 和操作系统?
rfig 支持 macOS 和 Linux 操作系统,以及 zsh、Bash 4.4+ 和 Fish 3.6+ 这三种 Shell。
如何安装 rfig?
可以通过 Homebrew 安装:先执行 `brew install tamia6/tap/rfig`,然后运行 `rfig setup`。设置后打开新的 Shell 会话即可。也可以下载发布包或从源码安装。
rfig 能替代 zsh-autosuggestions 吗?
可以。rfig 内置的历史建议功能可以替代 zsh-autosuggestions 的历史命令建议。它自行维护带工作目录的本地历史,不自动导入缺少目录信息的旧 Shell 历史。
rfig 的补全来源是什么?数据存储在哪里?
补全优先复用环境中的原生定义和已安装脚本,再结合可识别的补全生成器、协议和帮助缓存。帮助分析只是后备来源,不能保证任意命令都有完整的多级补全。历史、排序记录和缓存都保存在本机。