你一定会喜欢的终端自动补全工具 Fig

运维 系统运维
现在已经支持近300多种 CLI 工具的补全提示,比如 cd、git、docker、npm、yarn、kubectl、brew、aws 等等工具,而且我们还可以根据需求添加新的补全提示规范。

Fig 是一个可以在你的终端中添加自动补全命令的提示工具,当你在操作终端的时候,Fig 可以在你的终端中弹出子命令、选项和上下文相关的参数。Fig 并不是一个独立的终端,而是与你现有的终端工具进行集成。

现在已经支持近300多种 CLI 工具的补全提示,比如 cd、git、docker、npm、yarn、kubectl、brew、aws 等等工具,而且我们还可以根据需求添加新的补全提示规范。

如果你使用了 Fig,我相信你一定会喜欢上它的。

安装

要安装 Fig 非常简单。在你的 mac 中使用下面方法进行安装即可。

  • Homebrew: brew install fig。
  • DMG: 直接从 fig.io 网站下载 DMG 安装包。

Windows/Linux: 暂未开放。

安装完成后会有一个配置过程。

其中有一个不友好的地方是在配置最后需要使用邮箱注册一个帐号,而且该过程是需要代理的。

配置完成后就可以直接使用了,比如在 iterm 终端中使用 git 命令。

对我来说平时使用 kubectl 最多,同样也是支持的。

如果你经常使用 VSCode 下面的终端,那么可能会经常切换目录,那么这个时候 Fig 一定就可以提高你的效率了,直接在下拉框中就可以选择目录了,非常高效。

Fig 的软件中还有插件商店,不过还没正式上线,但是也能看出 Fig 官方接下来的路线,插件功能必然会对 Fig 提供更多的功能。

补全规范

补全规范是一个声明性的 schema ,它可以为 CLI 工具指定子命令、选项和参数,我们可以使用这些 schema 来生成建议。

下面是添加我们自己的补全规范的简单示例,首先需要有 Node.js 和 npm 环境。然后 Fork 项目 https://github.com/withfig/autocomplete。

创建自己的 fork 后,将 repo 克隆到本地:

git clone https://github.com/YOUR_GITHUB_USERNAME/autocomplete.git fig-autocomplete

然后将你的 fork 链接回 upstream repo,以便你可以获取最新的代码当然也可以贡献你的代码:

cd fig-autocomplete
git remote add upstream https://github.com/withfig/autocomplete.git

然后你需要安装相关依赖:

npm install

接着可以运行 create-spec 脚本来创建示例完成规范并将其命名为 abc:

npm run create-spec abc

create-spec 脚本将在你的默认编辑器中自动打开 ``./src/abc.ts`,可以看到如下所示的内容:

const completionSpec: Fig.Spec = {
name: "abc",
description: "",
subcommands: [
{
name: "my_subcommand",
description: "Example subcommand",
subcommands: [
{
name: "my_nested_subcommand",
description: "Example nested subcommand",
},
],
},
],
options: [
{
name: ["-h", "--help"],
description: "Help for abc",
},
],
};

然后我们可以执行 npm run dev 命令进入开发者模式,启用此模式后,Fig 将在更新时自动重新编译 abc.ts(或任何其他规范),然后 Fig 会从你的开发仓库中加载补全规范。

现在我们可以打开一个新的终端窗口,输入 abc 然后添加一个空格,你应该会看到刚刚创建的补全规范出现了自动补全提示功能。

关于 Fig 补全提示规范的更多用法可以参考官方文档 https://fig.io/docs 了解更多。

责任编辑:姜华 来源: Github爱好者
相关推荐

2020-06-05 09:47:55

Linux 系统 数据

2019-10-21 09:14:00

Wireshark网络抓包

2015-04-16 09:48:12

APP测试

2015-07-06 11:28:40

2020-01-27 10:48:55

Linux终端技巧

2023-12-18 13:10:00

finally死锁JVM 崩溃

2017-11-14 15:22:06

ReactNativeAppBugly

2020-11-17 11:10:42

MySQL数据库索引

2022-02-07 09:02:00

汽车智能技术

2015-10-12 11:26:12

iOS 9适配

2013-09-26 09:22:14

2010-11-17 11:11:44

跳槽

2009-03-10 19:04:58

服务器虚拟化IDC

2023-12-30 10:59:03

MySQLupdate数据库

2010-11-03 10:55:39

求职

2020-03-20 10:13:15

Linux 系统 数据

2023-04-12 16:56:00

Linux终端字体

2015-07-30 17:00:01

乔老爷

2017-10-25 11:02:14

CIO企业云业务

2023-12-07 19:55:00

点赞
收藏

51CTO技术栈公众号